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.