Mungkin bukan solusi yang paling elegan, dan kinerja IN
mungkin menderita di meja yang lebih besar.
Kueri bersarang mendapatkan Birthyear
minimum untuk setiap kota. Hanya catatan yang memiliki Birthyear
. ini dicocokkan dalam kueri luar. Memesan berdasarkan usia kemudian membatasi hingga 3 hasil memberi Anda 3 orang tertua yang juga tertua di kota mereka (Egon Spengler keluar..)
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 |
+-----------------+-------------+------+----+
Sunting - menambahkan GROUP BY City
ke kueri luar, karena orang dengan tahun kelahiran yang sama akan mengembalikan banyak nilai. Pengelompokan pada kueri luar memastikan bahwa hanya satu hasil yang akan dikembalikan per kota, jika lebih dari satu orang memiliki Birthyear
minimum tersebut . ct
kolom akan menunjukkan jika ada lebih dari satu orang di kota dengan Birthyear