Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Anzahl der in SQL Server abgerufenen Datensätze begrenzen, ohne LIMIT zu verwenden?

Wie kann ich die Anzahl der in SQL Server abgerufenen Datensätze begrenzen, ohne LIMIT zu verwenden?

Linda Hamilton
Linda HamiltonOriginal
2025-01-18 18:34:11535Durchsuche

How Can I Limit the Number of Records Retrieved in SQL Server Without Using LIMIT?

Datensatzlimit in SQL Server: LIMIT überschritten

SQL Server unterstützt nicht die LIMIT-Funktion oder den OFFSET-Operator, die üblicherweise in anderen Datenbanksystemen verwendet werden. Dies kann eine Herausforderung darstellen, wenn die Anzahl der abgerufenen Datensätze begrenzt wird.

SQL Server bietet jedoch eine alternative Möglichkeit, ähnliche Funktionen zu erreichen. Eine Möglichkeit besteht darin, die Funktion ROW_NUMBER() mit einer WHERE-Klausel zu verwenden:

<code class="language-sql">SELECT * 
FROM ( 
  SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS row 
  FROM sys.databases 
) a 
WHERE row > 5 AND row <= 10</code>

Diese Unterabfrage weist jeder Zeile eine Zeilennummer zu und filtert dann die Ergebnisse, um nur Zeilen innerhalb des angegebenen Bereichs einzuschließen.

Eine andere Möglichkeit ist die Verwendung der TOP-Klausel:

<code class="language-sql">SELECT TOP 10 * FROM stuff</code>

Obwohl TOP die Anzahl der zurückgegebenen Zeilen begrenzt, bietet es keine Kontrolle über die Startposition.

Warum verfügt SQL Server nicht über LIMIT?

Das Fehlen der LIMIT-Funktion in SQL Server kann auf Leistungsaspekte zurückzuführen sein. Die Verwendung von LIMIT kann zu Leistungseinbußen führen, insbesondere bei großen Tabellen. SQL Server priorisiert die Optimierung der Abfrageausführungszeit.

Verwenden Sie OFFSET und ROWS

Für SQL Server 2012 und höher können Sie die Schlüsselwörter OFFSET und ROWS verwenden, um eine detailliertere Kontrolle über die Ergebnismenge zu erhalten:

<code class="language-sql">SELECT  *
FROM     sys.databases
ORDER BY name 
OFFSET  5 ROWS 
FETCH NEXT 5 ROWS ONLY</code>

Diese Abfrage überspringt die ersten 5 Zeilen und ruft die nächsten 5 Zeilen ab und bietet so einschränkende Funktionen, die mit LIMIT vergleichbar sind.

Das obige ist der detaillierte Inhalt vonWie kann ich die Anzahl der in SQL Server abgerufenen Datensätze begrenzen, ohne LIMIT zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn