Antworten:
Verwende GREATEST ()
Z.B:
SELECT GREATEST(2,1);
Hinweis: Wenn zu diesem Zeitpunkt ein einzelner Wert null enthält, gibt diese Funktion immer null zurück (Dank an user @ sanghavi7).
GREATEST
eine Unterabfrage als Parameter ausführen, damit ich Werte für eine Cirtain-Spalte erhalten kann
select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;
bekommst du Datum1.
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
So ermitteln Sie den Maximalwert einer Spalte für mehrere Zeilen:
SELECT MAX(column1) FROM table; -- expect one result
So ermitteln Sie den Maximalwert einer Reihe von Spalten, Literalen oder Variablen für jede Zeile:
SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
GREATEST
. Jeder Nullwert bewirkt, dass die Funktion null zurückgibt. Um dies zu verhindern, können Sie tunGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Sie können die GREATEST- Funktion mit nicht nullbaren Feldern verwenden. Wenn einer dieser Werte (oder beide) NULL sein kann, verwenden Sie ihn nicht (Ergebnis kann NULL sein).
select
if(
fieldA is NULL,
if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
) as maxValue
Sie können NULL auf Ihren bevorzugten Standardwert ändern (wenn beide Werte NULL sind).
select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue
. Es ist überkompliziert
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))