dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Datenbanken: Oracle

Wie selektiere ich nur bestimmte Zeilen (LIMIT unter MySQL)?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

Da Oracle über kein Limit verfügt gestaltet sich die Abfrage etwas komplizierter (das Beispiel funktioniert erst ab Version 8.1):

SELECT *
  FROM
   (SELECT ROWNUM rownum2, inline_view1.*
      FROM
       (SELECT ROWNUM rownum1, ename, hiredate
          FROM emp
          ORDER BY hiredate
       ) inline_view1  -- zum Sortieren (ROWNUM hier noch ungeordnet)
   ) inline_view2      -- ROWNUM spiegelt jetzt die Sortierung wider
WHERE rownum2 BETWEEN 5 AND 7

Dies ist nicht sonderlich schnell, weil die innere Abfrage alle Zeilen auswählt. Für Versionen ab 8.1.6 geht auch folgendes:

SELECT *
  FROM
   (SELECT ROW_NUMBER()
    OVER(ORDER BY hiredate) rownum1, ename, hiredate
      FROM emp
   ) inline_view1
WHERE rownum1 BETWEEN 5 AND 7
/

Will man lediglich n Zeilen ausgeben tuts auch dies:

SELECT * FROM
  (SELECT ename, hiredate FROM emp ORDER BY hiredate)
WHERE ROWNUM < 6
Wie selektiere ich nur bestimmte Zeilen (LIMIT unter MySQL)?
http://www.php-faq.de/q-oracle-limit.html
 

Login