Używasz MAX
, która jest funkcją agregującą. Funkcje agregujące powodują traktowanie wielu wierszy w tabeli jako grupy. Jeśli nie zrobisz nic specjalnego, wszystkie wiersze w całej tabeli zostaną użyte jako jedna duża grupa, a gdy funkcja agregująca, taka jak MAX
jest tam, wszystkie te wiersze zostaną skondensowane w jednym wierszu zbiorczym. Ten efekt kondensacji wystąpiłby również w przypadku innych funkcji agregujących, takich jak MIN
, SUM
, GROUP_CONCAT
i znajomych (patrz:http://dev. mysql.com/doc/refman/5.1/en/group-by-functions.html
). Możesz również zastosować określone grupowania za pomocą GROUP BY
konstruktu, ale jeśli tego nie zrobisz, wystąpienie funkcji agregującej po prostu zbierze wszystkie wiersze w jeden (ale to grupowanie następuje po zastosowaniu WHERE
warunek, więc tylko filtrowane wiersze są agregowane)
Teraz, z powodu tego kondensującego lub „redukującego” efektu funkcji agregatów, istnieje sposób na zrobienie jednej wartości z wielu wartości. Dla MAX
, w ten sposób wyświetla się tylko maksymalna wartość znaleziona dla wszystkich wystąpień wyrażenia, które przekazałeś jako argument do MAX
. Ale twoje inne kolumny nie mają takiej funkcji agregującej. W przypadku większości produktów bazodanowych występowanie zarówno niezagregowanych, jak i zagregowanych kolumn w SELECT
lista byłaby błędem. Ale MySQL zachowuje się niewłaściwie/odmiennie i zwraca tylko jedną z dostępnych wartości dla każdego wyrażenia niezagregowanego wymienionego w SELECT
fragment. Która wartość jest do mysql - nie możesz polegać na żadnym konkretnym algorytmie.
W wielu przypadkach ludzie chcą zrobić coś z „dowolnym wierszem, który ma maksymalną wartość”, innymi słowy, znaleźć wiersz, który ma wartość maksymalną, ale użyj innych kolumn z tego wiersza bez agregacji. Rozwiązanie dostarczone przez middaparkę robi to i istnieją inne sposoby, aby to osiągnąć (google dla MySQL maksimum grupowo). Aby uzyskać więcej ogólnych informacji o funkcjach agregujących i związanych z nimi elementach GROUP BY
klauzulę, możesz rzucić okiem na mój artykuł -shameless selfplug- tutaj:http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html