SQL Server中的LIMIT N vs TOP N

时间:2018-06-22 23:29:03

标签: sql sql-server

我开始使用SQL Server。以下作品:

SELECT TOP 100 * 
FROM SalesRawData 
WHERE Title = N'Sriracha'

但是以下原因导致错误:

SELECT * 
FROM SalesRawData 
WHERE Title = N'Sriracha' 
LIMIT 100

为什么我不能在此处结尾使用“正常”限制语法?

2 个答案:

答案 0 :(得分:3)

DMBS供应商具有专有语法来提供LIMIT功能。 draft of the ANSI/ISO standards允许使用OFFSETFETCH子句,这也可以在SQL Server中实现。 ORDER BY是必需的(也需要使用TOP)才能提供可预测的结果。

以下是替代方法:

SELECT * FROM SalesRawData
WHERE Title = N'Sriracha' 
ORDER BY Title OFFSET 0 ROWS FETCH FIRST 100 ROWS ONLY;

答案 1 :(得分:2)

SQL Server支持两种方法来限制查询返回的结果数。最简单的是TOP,您已经发现它了。更高级的是FETCH,它还允许指定偏移量以实现分页。使用FETCH方法编写的查询将为SELECT * FROM SalesRawData where Title = N'Sriracha' OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY。您可以找到TOP here的文档和FETCH here的文档。