Odpowiedzi:
Użyj WIELKIEGO ()
Na przykład:
SELECT GREATEST(2,1);
Uwaga: Ilekroć jakakolwiek pojedyncza wartość zawiera w tym czasie wartość null, funkcja ta zawsze zwraca null (Podziękowania dla użytkownika @ sanghavi7)
GREATEST
uzyskać wartości dla kolumny cirtain
select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;
Dostaniesz date1.
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Aby uzyskać maksymalną wartość kolumny w zestawie wierszy:
SELECT MAX(column1) FROM table; -- expect one result
Aby uzyskać maksymalną wartość zestawu kolumn, literałów lub zmiennych dla każdego wiersza:
SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
GREATEST
. Każda wartość null spowoduje, że funkcja zwróci null. Aby temu zapobiec, możesz to zrobićGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Możesz użyć WIELKIEJ funkcji z polami, które nie mają wartości zerowych. Jeśli jedna z tych wartości (lub obie) może mieć wartość NULL, nie należy jej używać (wynik może mieć wartość NULL).
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
Możesz zmienić NULL na preferowaną wartość domyślną (jeśli obie wartości to NULL).
select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue
. To jest zbyt skomplikowane
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))