Syntaxerrors bei 0

Was stimmt nicht mit der folgenden Aussage? Ich verwende SQL server 2008.

use Demo; SELECT * FROM users limit 0 , 30 

Ich habe:

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

Das ist wirklich komisch. Ich habe versucht, aber ich habe nicht viel Infos gefunden.

LIMIT ist ein MySQL-Schlüsselwort. Verwenden Sie die ROWCOUNT oder ROWCOUNT Schlüsselwörter in MS SQL server.

Beachten Sie, dass TOP eine Variable annehmen kann, zB SELECT TOP( @NumberOfRows ) * FROM Foo;

Siehe: Wie benutzt man das Schlüsselwort LIMIT in SQL server 2005? (auch gültig für 2008)

Je nachdem, wie LIMIT verwendet wird, gibt es einen wichtigen Unterschied zwischen LIMIT und TOP ( Bereiche / Seiten von data im Vergleich zu nur die Anzahl der Ergebnisse). In diesem Fall ist die MS SQL-Syntax ausführlicher; In der Regel ist die function ROW_NUMBER () der Trick mit einer einfachen Logik kombiniert, um die für die gewünschte Seite gültigen Werte zu berechnen.

Einfache Auswahl Auswahlbeispiel

 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 verwendet diese Syntax und nicht das limit .

SQL server unterstützt die limit Klausel nicht (das ist die MySQL- und PostgreSQL-Syntax). Sie sollten top wie top :

 select top 30 * from users