Din fråga handlar specifikt om två kolumner, men jag har stött på situationer där jag behövde GREATEST
/LEAST
med mer än två kolumner. I dessa scenarier kan du använda COALESCE
och utöka lösningen till så många kolumner du vill.
Här är ett exempel med tre kolumner a
, b
och c
:
GREATEST(
COALESCE(a, b, c),
COALESCE(b, c, a),
COALESCE(c, a, b)
)
Observera att kolumnordningen för COALESCE
ändras så att varje inmatningskolumn är det första elementet COALESCE
åtminstone en gång. Den enda gången detta returnerar NULL är när alla inmatningskolumner är NULL.
I den "allmänna lösningen" är antalet COALESCE
satser kommer att vara lika med antalet inmatade kolumner:
GREATEST(
COALESCE(col1, col2, col3, col4, ....),
COALESCE(col2, col3, col4, ...., col1),
COALESCE(col3, col4, ...., col1, col2),
COALESCE(col4, ...., col1, col2, col3),
COALESCE(...., col1, col2, col3, col4),
...
)