以下陈述有什么问题?我正在使用SQL Server 2008。
use Demo;
SELECT * FROM users
limit 0 , 30
我得到了:
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '0'.
这真的很奇怪。我试过谷歌,但没有找到太多信息。
答案 0 :(得分:5)
LIMIT
是一个MySQL关键字。在MS SQL Server中使用TOP
或ROWCOUNT
个关键字。
请注意,TOP
可以接受变量,例如SELECT TOP( @NumberOfRows ) * FROM Foo;
请参阅:How to use LIMIT keyword in SQL Server 2005?(也适用于2008年)
根据LIMIT
的使用方式,是 LIMIT
与TOP
(ranges/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