शायद सबसे सुंदर समाधान नहीं, और IN
. का प्रदर्शन बड़े टेबल पर नुकसान हो सकता है।
नेस्टेड क्वेरी को न्यूनतम Birthyear
मिलता है प्रत्येक शहर के लिए। केवल वही रिकॉर्ड करते हैं जिनके पास यह Birthyear
है बाहरी क्वेरी में मेल खाते हैं। उम्र के अनुसार आदेश देने पर 3 परिणामों तक सीमित करने से आपको 3 सबसे पुराने लोग मिलते हैं जो अपने शहर के सबसे पुराने भी हैं (एगॉन स्पेंगलर ड्रॉप आउट..)
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 |
+-----------------+-------------+------+----+
संपादित करें - जोड़ा गया GROUP BY City
बाहरी क्वेरी के लिए, क्योंकि समान जन्म वर्ष वाले लोग कई मान लौटाएंगे। बाहरी क्वेरी पर समूहीकरण यह सुनिश्चित करता है कि प्रति शहर केवल एक परिणाम लौटाया जाएगा, यदि एक से अधिक व्यक्तियों के पास वह न्यूनतम Birthyear
है . ct
कॉलम दिखाएगा कि शहर में उस Birthyear
. के साथ एक से अधिक व्यक्ति मौजूद हैं या नहीं