Heim > Datenbank > MySQL-Tutorial > Wie beschränken Sie die Zeilen in Oracle -Abfragen nach der Bestellung?

Wie beschränken Sie die Zeilen in Oracle -Abfragen nach der Bestellung?

Linda Hamilton
Freigeben: 2025-01-25 08:41:12
Original
338 Leute haben es durchsucht

How to Limit Rows in Oracle Queries After Ordering?

Einschränken von Ergebnismengen in geordneten Oracle-Abfragen

Oracles ROWNUM-Pseudospalte unterscheidet sich von MySQLs LIMIT-Klausel; ROWNUM wird zugewiesen, bevor die ORDER BY-Klausel verarbeitet wird. Daher führt die direkte Verwendung von ROWNUM nicht zu einer Begrenzung der Zeilen nach der Bestellung. Um dies zu erreichen, verwenden Sie eine Unterabfrage:

<code class="language-sql">SELECT *
FROM (SELECT * FROM emp ORDER BY sal DESC)
WHERE ROWNUM <= n;</code>
Nach dem Login kopieren

Bei diesem Ansatz wird die emp-Tabelle zunächst nach Gehalt (sal) absteigend sortiert, dann verwendet die äußere Abfrage ROWNUM, um die Ausgabe auf die obersten n-Zeilen zu beschränken.

Für komplexere Szenarien, die sowohl Ober- als auch Untergrenzen erfordern, ist eine verschachtelte Unterabfrage erforderlich:

<code class="language-sql">SELECT *
FROM (SELECT a.*, ROWNUM rnum
      FROM (SELECT * FROM your_table ORDER BY your_column) a
      WHERE ROWNUM <= :MAX_ROW_TO_FETCH)
WHERE rnum >= :MIN_ROW_TO_FETCH;</code>
Nach dem Login kopieren

Oracle 12c und darüber hinaus

Oracle 12c (und spätere Versionen) bieten eine optimierte Syntax mit FETCH FIRST und OFFSET:

<code class="language-sql">SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;</code>
Nach dem Login kopieren

Dies begrenzt die Ergebnismenge direkt auf die ersten 10 Zeilen nach der Bestellung durch name. Um einen Offset anzugeben (z. B. die ersten 20 Zeilen überspringen und die nächsten 10 abrufen), verwenden Sie die OFFSET-Klausel:

<code class="language-sql">SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;</code>
Nach dem Login kopieren

Ausführliche Beispiele und Strategien zur Leistungsoptimierung finden Sie in der offiziellen Oracle-Dokumentation.

Das obige ist der detaillierte Inhalt vonWie beschränken Sie die Zeilen in Oracle -Abfragen nach der Bestellung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage