Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在T-SQL中从表中选择前N行?_Sql_Database - Fatal编程技术网

如何在T-SQL中从表中选择前N行?

如何在T-SQL中从表中选择前N行?,sql,database,Sql,Database,例如,在T-SQL工作MSSQL中,是否有任何方法可以选择表的前10行? 我想我在Oracle中看到了定义为rownum元变量的东西,使用方式如下 但是MSSQL呢 select * from Users where rownum<=10 如果@count是一个常量,可以去掉括号: select top(@count) * from users 后者也适用于SQLServer2000,而前者至少需要2005年 select top 42 * from users 请注意,如果不指定子句

例如,在T-SQL工作MSSQL中,是否有任何方法可以选择表的前10行? 我想我在Oracle中看到了定义为rownum元变量的东西,使用方式如下 但是MSSQL呢

select * from Users where rownum<=10 如果@count是一个常量,可以去掉括号:

select top(@count) * from users
后者也适用于SQLServer2000,而前者至少需要2005年

select top 42 * from users

请注意,如果不指定子句,则可以返回任何10行,因为在您告诉数据库要使用什么顺序之前,前10行实际上并不意味着什么。

您也可以使用rowcount,但TOP可能更好、更干净,因此对Mehrdad进行向上投票

SELECT TOP 10 *
FROM Users
试试这个:

SET ROWCOUNT 10
SELECT * FROM dbo.Orders
WHERE EmployeeID = 5
ORDER BY OrderDate

SET ROWCOUNT 0

您可以使用Microsoft的row_number函数来决定返回哪些行。这意味着您不仅限于前X个结果,还可以获取页面

选择* 从中选择order by UserID上的行号作为行号,* 从dbo.User作为用户 其中users.line_no<10 或用户。行号在34和67之间 但是,您必须嵌套原始查询,因为否则您将收到一条错误消息,告诉您不能以理想世界中可能应该能够做到的方式做您想做的事情

SELECT * FROM USERS LIMIT 10;
试试这个

Msg 4108, Level 15, State 1, Line 3
Windowed functions can only appear in the SELECT or ORDER BY clauses.
从表中选择前10*按顺序排列的名称顺序唯一列 描述


ORDERED_UNIQUE_列可以是递增主键,也可以是Orderby Difference的时间戳

+1。SQL Server永远不会保证没有Order by的Order。这是在2005年以前的SQL Server版本中参数化前N行的一种方法。还值得注意的是,如果要在Oracle中获得前10个结果,在mssql中使用rownum@Lukled时,必须按用户名从用户顺序写入select*from select*from from Users order by UserName。同样的情况也发生在mssql中:请记住,这在mssql中不起作用,但在MySql中起作用。
declare @topval int

set @topval = 5 (customized value)

SELECT TOP(@topval) * from your_database