Sandsynligvis ikke den mest elegante af løsninger, og ydeevnen af IN
kan lide på større borde.
Den indlejrede forespørgsel får minimum Birthyear
for hver by. Kun poster, der har dette Birthyear
matches i den ydre forespørgsel. Ved at bestille efter alder og derefter begrænse til 3 resultater får du de 3 ældste personer, som også er de ældste i deres by (Egon Spengler dropper ud..)
SELECT Name, City, Birthyear, COUNT(*) AS ct
FROM table
WHERE Birthyear IN (SELECT MIN(Birthyear)
FROM table
GROUP by City)
GROUP BY City
ORDER BY Birthyear DESC LIMIT 3;
+-----------------+-------------+------+----+
| name | city | year | ct |
+-----------------+-------------+------+----+
| Henry Jones | Chicago | 1899 | 1 |
| Mac Taylor | New York | 1955 | 1 |
| Sarah Connor | Los Angeles | 1959 | 1 |
+-----------------+-------------+------+----+
Rediger - tilføjet GROUP BY City
til ydre forespørgsel, da personer med samme fødselsår ville returnere flere værdier. Gruppering på den ydre forespørgsel sikrer, at der kun returneres ét resultat pr. by, hvis mere end én person har det mindste Birthyear
. ct
kolonnen vil vise, om der findes mere end én person i byen med det Birthyear