如何在T-SQL中从表中选择前N行?
例如,在T-SQL工作MSSQL中,是否有任何方法可以选择表的前10行? 我想我在Oracle中看到了定义为rownum元变量的东西,使用方式如下 但是MSSQL呢 select * from Users where rownum<=10 如果@count是一个常量,可以去掉括号:如何在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 请注意,如果不指定子句
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