Heim > Datenbank > MySQL-Tutorial > Wie kann man die Grenzklausel von MySQL in Oracle SQL -Abfragen effektiv emulieren?

Wie kann man die Grenzklausel von MySQL in Oracle SQL -Abfragen effektiv emulieren?

Barbara Streisand
Freigeben: 2025-01-25 08:47:09
Original
1001 Leute haben es durchsucht

How to Effectively Emulate MySQL's LIMIT Clause in Oracle SQL Queries?

replizieren MySQLs Limit in Oracle SQL

Mysqls LIMIT -Anklausel vereinfacht das Abrufen einer bestimmten Anzahl von Zeilen nach der Bestellung, was für die Paginierung von Daten von entscheidender Bedeutung ist. Oracle erfordert jedoch einen anderen Ansatz.

Warum Rownum nicht ausreicht

Während Oracas ROWNUM pseudocolumn wie eine Lösung erscheint, wird es vor die -Anklausel angewendet. Dies bedeutet, ORDER BY für eine Reihe geordneter Zeilen unvorhersehbare Ergebnisse zu erzielen. ROWNUM

Effektiver Unterabbildungsansatz

Eine zuverlässige Methode beinhaltet eine Unterabfrage, um zuerst die Daten zu bestellen, und dann

für die Begrenzung anwenden: ROWNUM

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

Definieren der oberen und unteren Grenzen

Für eine genauere Kontrolle, die sowohl minimale als auch maximale Zeilenzahlen angeben, erfordert eine komplexere Abfrage:

<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 spätere Verbesserungen

Oracle 12c und spätere Versionen bieten eine sauberere Lösung mit

und FETCH FIRST: OFFSET

<code class="language-sql">-- Retrieve the first 10 rows
SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;

-- Retrieve rows 20-30
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;</code>
Nach dem Login kopieren
Diese optimierte Syntax bietet eine intuitivere Möglichkeit, Zeilengrenzen und Offsets in Oracle zu verwalten.

Das obige ist der detaillierte Inhalt vonWie kann man die Grenzklausel von MySQL in Oracle SQL -Abfragen effektiv emulieren?. 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