Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql 0附近出现语法错误_Sql_Sql Server_Sql Server 2008_Select - Fatal编程技术网

Sql 0附近出现语法错误

Sql 0附近出现语法错误,sql,sql-server,sql-server-2008,select,Sql,Sql Server,Sql Server 2008,Select,下面的说法有什么不对?我正在使用SQLServer2008 use Demo; SELECT * FROM users limit 0 , 30 我得到: Msg 102, Level 15, State 1, Line 4 Incorrect syntax near '0'. 真奇怪。我试过谷歌,但没找到多少信息 select top 30 * from users SQL Server使用该语法而不是limit表单。SQL Server不支持limit子句(即MySQL和Postgr

下面的说法有什么不对?我正在使用SQLServer2008

use Demo;

SELECT * FROM users
limit 0 , 30
我得到:

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '0'.
真奇怪。我试过谷歌,但没找到多少信息

select top 30 * from users

SQL Server使用该语法而不是
limit
表单。

SQL Server不支持
limit
子句(即MySQL和PostgreSQL语法)。您应该像这样使用
top

select top 30 * from users

LIMIT
是一个MySQL关键字。在MS SQL Server中使用
TOP
ROWCOUNT
关键字

请注意,
TOP
可以接受变量,例如从Foo中选择TOP(@NumberOfRows)*

见:(同样适用于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