以下陈述有什么问题?我正在使用 SQL Server 2008。
use Demo;
SELECT * FROM users
limit 0 , 30
我有:
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '0'.
这真的很奇怪。我尝试了谷歌,但没有找到太多信息。
以下陈述有什么问题?我正在使用 SQL Server 2008。
use Demo;
SELECT * FROM users
limit 0 , 30
我有:
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '0'.
这真的很奇怪。我尝试了谷歌,但没有找到太多信息。
LIMIT
是 MySQL 关键字。在 MS SQL Server 中使用TOP
or关键字。ROWCOUNT
注意TOP
可以接受一个变量,例如SELECT TOP( @NumberOfRows ) * FROM Foo;
请参阅:如何在 SQL Server 2005 中使用 LIMIT 关键字?(也适用于 2008 年)
根据LIMIT
使用方式,和(数据范围/页面与仅限制结果数量)之间存在重要区别。在这种情况下,MS SQL 语法更加冗长;通常 ROW_NUMBER() 函数结合一些简单的逻辑来计算对所需页面有效的值。LIMIT
TOP
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
select top 30 * from users
SQL Server 使用该语法而不是limit
表单。
SQL Server 不支持该limit
子句(即 MySQL 和 PostgreSQL 语法)。你应该top
这样使用:
select top 30 * from users