SQL Server-Äquivalent zur LIMIT-Klausel von MySQL
Die LIMIT-Klausel von MySQL, die die Anzahl der von einer Abfrage zurückgegebenen Zeilen einschränkt, hat kein direktes Äquivalent im SQL Server. Das kann frustrierend sein, aber es gibt mehrere Problemumgehungen.
OFFSET/FETCH-Syntax (SQL Server 2012 und höher)
In SQL Server 2012 und höher ist die ANSI Für die Paginierung kann die Standard-OFFSET/FETCH-Syntax verwendet werden. Die folgende Abfrage veranschaulicht diese Syntax:
SELECT ID, Name, Price, Image FROM Products ORDER BY ID ASC OFFSET (@start_from - 1) ROWS FETCH NEXT @items_on_page ROWS ONLY;
ROW_NUMBER()-Methode (vor SQL Server 2012)
Vor SQL Server 2012 die ROW_NUMBER()-Methode kann verwendet werden, um die LIMIT-Klausel zu simulieren:
WITH o AS ( SELECT TOP ((@start_from - 1) + @items_on_page) RowNum = ROW_NUMBER() OVER (ORDER BY ID ASC) /* , other columns */ FROM Products ) SELECT RowNum /* , other columns */ FROM o WHERE RowNum >= @start_from ORDER BY RowNum;
Sonstige Problemumgehungen
Zusätzlich zu den oben beschriebenen Methoden stehen verschiedene andere Problemumgehungen zur Verfügung, einschließlich der Verwendung von Cursorn oder temporären Tabellen. Allerdings sind diese Lösungen im Allgemeinen weniger effizient und komplexer.
Es ist wichtig zu beachten, dass Microsoft die Einschränkungen der aktuellen Paginierungsmechanismen erkannt und Interesse bekundet hat, in zukünftigen Versionen native LIMIT-Unterstützung zu SQL Server hinzuzufügen.
Das obige ist der detaillierte Inhalt vonWie repliziere ich die LIMIT-Klausel von MySQL in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!