Du använder MAX
, som är en aggregerad funktion. Aggregatfunktioner har effekten av att behandla flera rader i tabellen som en grupp. Om du inte gör något speciellt kommer alla rader i hela tabellen att användas som en stor grupp, och när en aggregeringsfunktion som MAX
finns där, kommer alla dessa rader att kondenseras till bara en sammanlagd rad. Den kondenserande effekten skulle även ha inträffat för andra aggregatfunktioner som MIN
, SUM
, GROUP_CONCAT
och vänner (se:http://dev. mysql.com/doc/refman/5.1/en/group-by-functions.html
). Du kan också tillämpa specifika grupperingar med GROUP BY
konstruktion, men om du inte gör det kommer förekomsten av den aggregerade funktionen bara att samla alla rader i en rad (men denna hopsamling sker efter tillämpning av WHERE
skick, så bara de filtrerade raderna aggregeras)
Nu, på grund av denna kondenserande eller "reducerande" effekt av aggregerade funktioner, finns det något sätt att göra ett värde av många värden. För MAX
, det sättet är att bara lista det maximala värdet som hittades för alla instanser av uttrycket du skickade som argument till MAX
. Men dina andra kolumner har inte en sådan aggregerad funktion. För de flesta databasprodukter förekommer både oaggregerade och aggregerade kolumner i SELECT
listan skulle vara ett fel. Men MySQL beter sig fel/annorlunda och returnerar bara ett av de tillgängliga värdena för varje icke-aggregerat uttryck som anges i SELECT
bit. Vilket värde är upp till mysql - du kan inte lita på någon speciell algoritm.
I många fall vill folk göra något med "vilken rad som har det maximala värdet", med andra ord, hitta raden som har maximalt värde som värde, men använd de andra kolumnerna från den raden oaggregerade. Lösningen som tillhandahålls av middaparka gör det, och det finns andra sätt att uppnå det också (googla efter MySQL gruppvis maximalt). För mer allmän information om aggregerade funktioner och relaterade GROUP BY
klausul, du kan ta en titt på -skamlös selfplug- min artikel här:http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html