有没有办法选择,例如,在T-SQL(工作MSSQL)中的前10行表? 我想我在Oracle中看到了一些定义为rownum元变量的东西,用于以下方式
select * from Users where rownum<=10但是MSSQL呢?
答案 0 :(得分:46)
select top(@count) * from users
如果@count
是常量,则可以删除括号:
select top 42 * from users
(后者也适用于SQL Server 2000,前者至少需要2005年)
答案 1 :(得分:8)
SELECT TOP 10 *
FROM Users
请注意,如果您没有指定ORDER BY
子句,则可以返回任意10行,因为“前10行”并不意味着什么,除非您告诉数据库使用什么订单。
答案 2 :(得分:7)
您可以使用Microsoft的row_number()函数来决定返回哪些行。这意味着您不仅限于前X个结果,还可以选择页面。
SELECT *
FROM (SELECT row_number() over (order by UserID) AS line_no, *
FROM dbo.User) as users
WHERE users.line_no < 10
OR users.line_no BETWEEN 34 and 67
您必须嵌套原始查询,否则您将收到一条错误消息,告诉您无法以理想世界中的方式执行您想要的操作。
Msg 4108, Level 15, State 1, Line 3
Windowed functions can only appear in the SELECT or ORDER BY clauses.
答案 3 :(得分:4)
你也可以使用rowcount,但TOP可能更好更清洁,因此Mehrdad的upvote
SET ROWCOUNT 10
SELECT * FROM dbo.Orders
WHERE EmployeeID = 5
ORDER BY OrderDate
SET ROWCOUNT 0
答案 4 :(得分:1)
试试这个。
declare @topval int
set @topval = 5 (customized value)
SELECT TOP(@topval) * from your_database
答案 5 :(得分:0)
试试这个:
SELECT * FROM USERS LIMIT 10;
答案 6 :(得分:0)
SELECT TOP 10 * FROM TABLE_NAME ORDER BY ORDERED_UNIQUE_COLUMN DESC
ORDERED_UNIQUE_COLUMN 可能是您的递增主键或时间戳