Na pierwszy rzut oka MySQL MAX()
i GREATEST()
funkcje wykonują podobną operację. Obie zwracają maksymalną wartość z zakresu wartości. Istnieje jednak różnica między tymi dwiema funkcjami.
Najlepszym sposobem, aby zobaczyć różnicę między tymi dwiema funkcjami, jest porównanie ich składni.
Składnia
Składnia każdej funkcji wygląda następująco:
MAX([DISTINCT] expr) [over_clause] GREATEST(value1,value2,...)
Już teraz wyglądają zupełnie inaczej. MAX()
funkcja akceptuje DISTINCT
słowo kluczowe oraz OVER
klauzula (oraz GREATEST()
funkcja nie).
Jednak kluczowa różnica między tymi dwiema funkcjami tkwi w akceptowanym argumencie/ach. W szczególności:
MAX()
akceptuje jeden argumentGREATEST()
akceptuje wiele argumentów
Więc MAX()
jest zwykle używany do zwracania maksymalnej wartości w kolumnie w bazie danych. Tabela może zawierać wiele wierszy, ale ta funkcja zwraca ten z maksymalną wartością.
GREATEST()
z drugiej strony zwraca argument o maksymalnej wartości z listy przekazanych do niego argumentów. Możesz więc przekazać, powiedzmy, 3 argumenty do tej funkcji, a zwróci ona ten z największą wartością.
Przykład 1 – Funkcja MAX()
Oto przykład demonstrujący MAX()
funkcja.
SELECT MAX(Population) AS 'Result' FROM City;
Wynik:
+----------+ | Result | +----------+ | 10500000 | +----------+
W tym przykładzie znajduje się miasto o największej populacji z City
stół. Kolumna zawierająca populację każdego miasta nazywa się Population
.
Kluczową kwestią w tym przykładzie jest to, że do funkcji podano tylko jeden argument, ale zapytano wiele wierszy.
Jeśli spróbujesz przekazać wiele argumentów do MAX()
funkcja, otrzymasz błąd.
Przykład 2 – Funkcja NAJWIĘKSZY()
Oto przykład demonstrujący GREATEST()
funkcja.
SELECT GREATEST(1, 5, 9) AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 9 | +--------+
Tak więc w tym przypadku podajemy trzy argumenty. Każdy argument jest porównywany z drugim. Jest to przeciwieństwo pojedynczego argumentu dostarczonego do MAX()
funkcja.
Jeśli spróbujesz przekazać pojedynczy argument do GREATEST()
funkcja, otrzymasz błąd.