160 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
4.5.2 Die Zeile, die den h¨ochsten Wert einer bestimmten Spalte
enth¨alt
“Suche Artikelnummer, H¨andler und Preis des teuersten Artikels.”
In ANSI-SQL wird das mit einer Unterabfrage (Sub-Query) durchgef¨uhrt:
SELECT artikel, haendler, preis
FROM shop
WHERE preis=(SELECT MAX(preis) FROM shop)
In MySQL (was noch keine Unterabfragen hat) f¨uhren Sie das in zwei Schritten durch:
1. Mit einem SELECT-Statement ermitteln Sie den h¨ochsten Preis in der Tabelle.
2. Mit diesem Wert stellen Sie die aktuelle Anfrage zusammen:
SELECT artikel, haendler, preis
FROM shop
WHERE preis=19.95
Eine andere L¨osung besteht darin, alle Zeilen absteigend nach Preis zu sortieren und nur
die erste Zeile zu nehmen, indem Sie die MySQL-spezifische LIMIT-Klausel benutzen:
SELECT artikel, haendler, preis
FROM shop
ORDER BY preis DESC
LIMIT 1
ACHTUNG: Wenn es mehrere teuerste Artikel gibt (die zum Beispiel alle 19.95 kosten),
zeigt die LIMIT-L¨osung nur einen davon!
4.5.3 H¨ochster Wert einer Spalte pro Gruppe
“Was ist der h¨ochste Preis pro Artikel?”
SELECT artikel, MAX(preis) AS preis
FROM shop
GROUP BY artikel
+---------+-------+
| artikel | preis |
+---------+-------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+---------+-------+
4.5.4 Die Zeilen, die das gruppenweise Maximum eines
bestimmten Felds enthalten
“Suche f¨ur jeden Artikel den oder die H¨andler mit den teuersten Preisen.”
In ANSI-SQL w¨urden Sie das wie folgt mit einer Unterabfrage erledigen:
Comentarios a estos manuales