0

次のステートメントの何が問題になっていますか?SQLServer2008を使用しています。

use Demo;

SELECT * FROM users
limit 0 , 30

私が得た:

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

それは本当に奇妙です。Googleを試しましたが、あまり情報が見つかりませんでした。

4

3 に答える 3

5

LIMITMySQLキーワードです。MSSQLServerでTOPまたはROWCOUNTキーワードを使用します。

TOP変数を受け入れることができることに注意してください。SELECT TOP( @NumberOfRows ) * FROM Foo;

参照:SQL Server 2005でLIMITキーワードを使用する方法は?(2008年にも有効)

LIMIT使用方法に応じて、との間に重要な違いがLIMITありますTOPデータの範囲/ページと結果の数を制限するだけ)。その場合、MSSQL構文はより冗長になります。通常、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
于 2012-04-14T10:42:04.790 に答える
4
select top 30 * from users

SQL Serverは、フォームではなくその構文を使用します。limit

于 2012-04-14T10:41:23.567 に答える
1

limitSQL Serverはこの句(つまり、MySQLとPostgreSQLの構文)をサポートしていません。top次のように使用する必要があります。

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