Om du använder MAX()
GROUP BY
klausulen talar i huvudsak om för frågemotorn hur man grupperar objekten för att fastställa ett maximum. I ditt första exempel valde du bara en enda kolumn, så det fanns inget behov av gruppering. Men i ditt andra exempel hade du flera kolumner. Så du måste berätta för frågemotorn hur man avgör vilka som kommer att jämföras för att hitta ett maximum.
Du sa åt den att gruppera efter id
kolumn. Vilket betyder att den kommer att jämföra poster som har samma id
och ge dig det maximala för varje unikt id
. Eftersom varje post har ett annat id
, du gjorde i princip ingenting med den klausulen.
Den grupperade alla poster med ett id
av 1
(som var en enda post), och returnerade posten med det maximala id
från den gruppen (vilket var det rekordet). Det gjorde samma sak för 2
, 3
osv.
När det gäller de tre kolumnerna som visas här skulle det enda ställe där det skulle vara meningsfullt att gruppera dina poster på test_id
kolumn. Något så här:
SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null
GROUP BY test_id
Detta skulle gruppera dem efter test_id
, så resultaten kommer att inkludera post 6 (det maximala id
). för test_id
0), 4 (det maximala id
för test_id
1) och 8 (det maximala id
). för test_id
2). Genom att dela upp posterna i dessa tre grupper baserat på de tre unika värdena i test_id
kolumnen kan den effektivt hitta ett "maximalt" id
inom varje grupp.