I tilfælde af brug af MAX()
GROUP BY
klausul fortæller i det væsentlige forespørgselsmotoren, hvordan man grupperer de elementer, hvorfra der skal bestemmes et maksimum. I dit første eksempel valgte du kun en enkelt kolonne, så der var ikke behov for gruppering. Men i dit andet eksempel havde du flere kolonner. Så du skal fortælle forespørgselsmotoren, hvordan man bestemmer, hvilke der skal sammenlignes for at finde et maksimum.
Du fortalte det til at gruppere efter id
kolonne. Hvilket betyder, at den kommer til at sammenligne poster, der har det samme id
og give dig det maksimale for hvert unikt id
. Da hver post har et andet id
, du gjorde stort set ikke noget med den klausul.
Den grupperede alle poster med et id
af 1
(som var en enkelt post), og returnerede posten med det maksimale id
fra den gruppe (som var den rekord). Det gjorde det samme for 2
, 3
osv.
I tilfælde af de tre kolonner, der er vist her, ville det eneste sted, hvor det ville give mening at gruppere dine poster, være på test_id
kolonne. Noget som dette:
SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null
GROUP BY test_id
Dette ville gruppere dem efter test_id
, så resultaterne vil inkludere post 6 (det maksimale id
). for test_id
0), 4 (det maksimale id
for test_id
1) og 8 (det maksimale id
for test_id
2). Ved at opdele posterne i disse tre grupper baseret på de tre unikke værdier i test_id
kolonne, kan den effektivt finde et "maksimalt" id
inden for hver gruppe.