0

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

use Demo;

SELECT * FROM users
limit 0 , 30

我有:

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

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

4

3 回答 3

5

LIMIT是 MySQL 关键字。在 MS SQL Server 中使用TOPor关键字。ROWCOUNT

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

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

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

简单范围选择示例

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
于 2012-04-14T10:42:04.790 回答
4
select top 30 * from users

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

于 2012-04-14T10:41:23.567 回答
1

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

select top 30 * from users
于 2012-04-14T10:41:33.983 回答