436 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
where t1.name = t2.name;
• Auf Spalten, die f¨ur die Ausgabe ausgew¨ahlt wurden, kann in ORDER BY- und GROUP BY-
Klauseln mit Spaltennamen, Spalten-Aliasen oder Spaltenpositionen verwiesen werden.
Spaltenpositionen fangen mit 1 an:
mysql> select hochschule, region, seed von tournament
ORDER BY region, seed;
mysql> select hochschule, region AS r, seed AS s from turnier
ORDER BY r, s;
mysql> select hochschule, region, seed from turnier
ORDER BY 2, 3;
Um in absteigender Reihenfolge zu sortieren, f¨ugen Sie dem Namen der Spalte das
DESC-Schl¨usselwort in the ORDER BY-Klausel hinzu (descending, absteigend), nach der
Sie sortieren. Die Vorgabe ist aufsteigende Reihenfolge. Das k¨onnen Sie auch explizit
angeben, indem Sie das ASC-Schl¨usselwort verwenden.
• In der WHERE-Klausel k¨onnen Sie beliebige Funktionen verwenden, die MySQL un-
terst¨utzt. Siehe Abschnitt 7.3 [Functions], Seite 397.
• Die HAVING-Klausel kann auf jede Spalte oder jeden Alias verweisen, die bzw. der im
select_ausdruck genannt wurde. Die Klausel wird zuletzt angewandt, direkt bevor
Ergebnisse an den Client geschickt werden, ohne jede Optimierung. Benutzen Sie kein
HAVING f¨ur Dinge, die in der WHERE-Klausel stehen sollten. Schreiben Sie beispielsweise
nicht folgendes:
mysql> select spalten_name from tabelle HAVING spalten_name > 0;
Sondern statt dessen:
mysql> select spalten_name from tabelle WHERE spalten_name > 0;
Ab MySQL-Version 3.22.5 k¨onnen Sie Anfragen auch wie folgt schreiben:
mysql> select user,max(gehalt) from benutzer
group by benutzer HAVING max(gehalt)>10;
In ¨alteren MySQL-Versionen schreiben Sie statt dessen:
mysql> select benutzer,max(gehalt) AS summe from benutzer
group by benutzer HAVING summe>10;
• SQL_SMALL_RESULT, SQL_BIG_RESULT, SQL_BUFFER_RESULT, STRAIGHT_JOIN und
HIGH_PRIORITY sind MySQL Erweiterungen zu ANSI-SQL92.
• HIGH_PRIORITY gibt dem SELECT h¨ohere Priorit¨at als einem Statement, das eine Tabelle
aktualisiert. Sie sollten das nur f¨ur Anfragen benutzen, die sehr schnell sind und sofort
durchgef¨uhrt werden m¨ussen. Eine SELECT HIGH_PRIORITY-Anfrage l¨auft, wenn die
Tabelle eine Lese-Sperre hat, selbst wenn es ein Update-Statement gibt, das darauf
wartet, dass die Tabelle freigegeben wird.
• SQL_BIG_RESULT kann bei GROUP BY oder DISTINCT benutzt werden, um dem Opti-
mierer mitzuteilen, dass das Ergebnis sehr viele Zeilen haben wird. In diesem Fall
benutzt MySQL bei Bedarf direkt Festplatten-basierende tempor¨are Tabellen. Ausser-
dem bevorzugt MySQL in diesem Fall Sortieren vor dem Anlegen einer tempor¨aren
Tabelle mit einem Schl¨ussel auf den GROUP BY-Elementen.
Kommentare zu diesen Handbüchern