语法错误接近0

dai*_*isy 0 sql sql-server select sql-server-2008

以下陈述有什么问题?我正在使用SQL Server 2008.

use Demo;

SELECT * FROM users
limit 0 , 30
Run Code Online (Sandbox Code Playgroud)

我有:

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '0'.
Run Code Online (Sandbox Code Playgroud)

这真的很奇怪.我试过谷歌,但没有找到太多信息.

Tim*_*ora 5

LIMIT是一个MySQL关键字.在MS SQL Server中使用TOPROWCOUNT关键字.

注意,TOP可以接受变量,例如SELECT TOP( @NumberOfRows ) * FROM Foo;

请参阅:如何在SQL Server 2005中使用LIMIT关键字?(也适用于2008年)

根据LIMIT使用方式的不同,LIMIT和之间存在重要差异TOP(数据的范围/页数与仅限制结果数量之间的差异).在这种情况下,MS SQL语法更详细; 通常,ROW_NUMBER()函数结合一些简单的逻辑来计算对所需页面有效的值.

简单范围选择示例

SELECT * FROM
(
    SELECT 
        ROW_NUMBER() OVER( ORDER BY SomeColumn ASC ) AS RowNumber, 
        AnotherColumn 
    FROM dbo.MyTable
) Q

WHERE RowNumber BETWEEN 20 AND 30; -- these integers can be variables
Run Code Online (Sandbox Code Playgroud)