语法错误接近0

时间:2012-04-14 10:40:01

标签: sql sql-server sql-server-2008 select

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

use Demo;

SELECT * FROM users
limit 0 , 30

我得到了:

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '0'.

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

3 个答案:

答案 0 :(得分:5)

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

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

请参阅:How to use LIMIT keyword in SQL Server 2005?(也适用于2008年)

根据LIMIT的使用方式, LIMITTOPranges/pages of data之间的重要差异,而不仅限于结果)。在这种情况下,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

答案 1 :(得分:4)

select top 30 * from users

SQL Server使用那个语法而不是limit形式。

答案 2 :(得分:1)

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

select top 30 * from users