2009-10-14 12 views
216

Próbowałem, ale nie powiodło się:Jak uzyskać maksimum dwóch wartości w MySQL?

mysql> select max(1,0); 
 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use 
near '0)' at line 1 

Odpowiedz

399

Zastosowanie GREATEST()

np

SELECT GREATEST(2,1); 
+0

przykład: wybierz największy (queue.count - 1, 0) z kolejki; – Jahmic

+27

należy pamiętać, że jeśli jakakolwiek pojedyncza wartość zawiera zero, funkcja zawsze zwraca wartość zerową jako odpowiedź! – sanghavi7

+16

Istnieje również ["LEAST"] (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least) – bobobobo

18

aby uzyskać maksymalną wartość kolumny w poprzek zestawu 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 
4

Można użyć GREATEST funkcję z pól pustych. 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ć wartość NULL na preferowaną wartość domyślną (jeśli obie wartości mają wartość NULL).

+0

Dlatego właśnie nienawidzę MySQL. Cóż za ogromna praca do wykonania tak prostej rzeczy. –

Powiązane problemy