ORDER-BY-Klausel

Die ORDER-BY-Klausel bietet die Möglichkeit, die Ausgabe einer SELECT-Anweisung beliebig zu sortieren. Diese Klausel ist nur auf der obersten (äußersten) Ebene der SELECT-Anfragen möglich, nicht für die Zwischenergebnismengen der Unterabfragen?, die innerhalb eines SELECTs geschachtelt sind.

Syntax der ORDER-BY-Klausel

  <ORDER BY Klausel>   ::=    ORDER [ SIBLINGS ] BY   <Sortierung> [ NULLS FIRST | NULLS LAST ]

  <Sortierung>   ::=
          { Spaltenausdruck | Spaltennummer | Spaltenalias } [DESC|ASC]  
          [, { Spaltenausdruck | Spaltennummer | Spaltenalias } [DESC|ASC] ] 
  • Die Namen der zu sortierenden Spalten müssen aus den Tabellen/Sichten der FROM-Klausel stammen. Sie müssen nicht in der SELECT-Klausel verwendet werden, womit auch nach nicht angezeigten Spalten sortiert werden kann.
  • Die SIBLINGS-Option ist im Zusammenhang mit der hierarchischen CONNECT-BY-Klausel anwendbar und sortiert gemäß dem Geschwistern von Datensätzen.
  • Sind die zu sortierenden Spalten für einige Datensätze leer (NULL) dann werden sie an den Anfang NULLS FIRST bzw. das Ende NULLS LAST der Ergebnismenge sortiert.
  • ASC steht für aufsteigend (DEFAULT), DESC steht für absteigend. Bei alphanumerischen Zeichen wird nach dem ASCII-Code sortiert.
  • Alternativ kann auch über die Spaltennummer oder Spaltenalias sortiert werden.
  • Wenn in den ORDER-BY-Spalten ein NULL-Wert auftaucht, wird dieser zum Schluss ausgegeben (siehe 3. Beispiel).

Beispiele

Geben Sie eine Liste aller Kunden aus, die nach Ort aufsteigend geordnet sind und dann noch mal absteigend innerhalb des Ortes nach Nachname:

  SELECT Ort, Nachname, Vorname
    FROM Kunden
   ORDER BY Ort, Nachname DESC;

  SELEC Ort, Nachname, Vorname
   FROM Kunden
  ORDER BY   1 , 2 DESC;

Bei einer SELECT-Abfrage mit UNION, INTERSECT oder MINUS (siehe: Anfragemengenausdruck) muss die ORDER-BY-Klausel am Ende der gesamten Anweisung stehen und kann sich bei einem Spaltenalias nur auf die erste Anweisung beziehen.

  SELECT Nachname FROM Kunden
     UNION
  SELECT Nachname FROM Angestellte
  ORDER BY 1;

  SELECT   Nachname AS Name1 FROM Kunden
    UNION
  SELECT   Nachname AS Name2 FROM angestellte
  ORDER BY   Name1;

Mit drei Datensätzen und einsortieren leerer Spalten:

  SELECT   2 sp1, 'B' sp2 FROM Dual
  UNION
  SELECT   1, 'A' FROM DUAL
  UNION
  SELECT   3, NULL FROM DUAL
  ORDER BY 2; 

  ergibt folgendes Ergebnis:
sp1sp2
1A
2B
3 

Quellen:

  • Quellen/Standards in http://www.wiscorp.com/SQLStandards.html und http://www.jcc.com/sql.htm
  • INCITS/ISO/IEC 9075-1-2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • INCITS/ISO/IEC 9075-1-2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • Adams, Ralf: "SQL - Eine Einführung mit vertiefenden Exkursen", Hanser, München, 2012, ISBN 978-3-446-43200-0
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
  • Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
  • Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
  • Sieben, Jürgen: "Oracle® SQL - Das umfassende Handbuch", Galileo Press, 2012, ISBN 978-3-8362-1875-7
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: SQL, O