Zde je vynikající článek v oficiální dokumentaci MySQL:
Citace:
Řádky obsahující skupinové maximum určitého sloupce
Úkol:U každého článku najděte prodejce nebo prodejce s nejdražší cenou.
Tento problém lze vyřešit pomocí poddotazu, jako je tento:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
Předchozí příklad používá korelovaný poddotaz, který může být neefektivní (viz 13.2.10.7 – „Korelované poddotazy“). Další možností řešení problému je použití nekorelovaného poddotazu v klauzuli FROM nebo LEFT JOIN.
Nekorelovaný dílčí dotaz:
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;
LEVÉ PŘIPOJENÍ:
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 funguje na základě toho, že když je s1.price na své maximální hodnotě, neexistuje žádná s2.price s vyšší hodnotou a hodnoty s2 řádků budou NULL.