Her er en fremragende artikel i den officielle MySQL-dokumentation:
Citat:
Rækkerne med gruppemæssigt maksimum af en bestemt kolonne
Opgave:For hver artikel skal du finde den eller de forhandlere, der har den dyreste pris.
Dette problem kan løses med en underforespørgsel som denne:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
Det foregående eksempel bruger en korreleret underforespørgsel, som kan være ineffektiv (se afsnit 13.2.10.7, "Korrelerede underforespørgsler"). Andre muligheder for at løse problemet er at bruge en ukorreleret underforespørgsel i FROM-sætningen eller en LEFT JOIN.
Ukorreleret underforespørgsel:
SELECT s1.article, dealer, s1.price
FROM shop s1
JOIN (
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article) AS s2
ON s1.article = s2.article AND s1.price = s2.price;
VENSTRE JOIN:
SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
WHERE s2.article IS NULL;
LEFT JOIN fungerer på det grundlag, at når s1.price er på sin maksimale værdi, er der ingen s2.price med en større værdi, og s2 rækkernes værdier vil være NULL.