22 Stimmen

MySQL: Von zwei Werten den größeren bestimmen

Frage von NetLabel | 24.10.2011 um 17:26

Ich habe ein kleines Problem mit MySQL. Ich möchte den größeren von zwei Werten herausfinden und zurückgeben. Ich habe es mit MAX() probiert, aber das führt immer nur zu einer Fehlermeldung. Was kann ich tun?

Meine Abfrage sieht bisher etwa so aus: SELECT MAX(0,(SELECT ...)). Es soll also geschaut werden ob 0 oder der Wert aus der SELECT Anweisung größer ist und der größere der beiden Werte soll ausgegeben werden.

AntwortenPositivNegativ
5Beste Antwort5 Stimmen

MAX() und MIN() kannst du nur verwenden, wenn du den größten Wert aus einer Spalte herausfinden möchtest, also zum Beispiel wie in diesem Beispiel:

SELECT MIN(punkte), MAX(punkte) FROM tabelle;

Hier bekommen wir aus der Tabelle den minimalsten und den maximalsten Wert, der in der Spalte punkte vorkommt.

Was du benötigst ist GREATEST(). GREATEST() liefert den größten Wert von zwei oder mehreren Werten zurück. Das Gegenstück dazu ist LEAST(), das den kleinsten Wert zurück gibt:

SELECT GREATEST(1,8,3)
-> 8
SELECT LEAST(1,8,3)
-> 1

In dem Zusammenhang sollte man auch noch darauf achten, ob einer der gewählten Werte NULL werden kann. Bis MySQL 4.1 gibt GREATEST nur NULL zurück, wenn alle verglichenen Werte NULL sind. Ab MySQL 5.1 wird NULL zurück gegeben, sobald ein Argument NULL ist, also:

SELECT GREATEST(NULL, 8)
-> NULL ab MySQL 5.1
SELECT COALESCE(NULL, 8)
-> 8
Hier kann man zum Beispiel mit COALESCE() arbeiten. COALESCE() gibt den ersten Wert in der Liste wieder, der nicht NULL ist oder NULL wenn alle Werte in der Liste NULL sind.
25.10.2011 um 19:47

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.