यदि मैं आपकी क्वेरी को सही ढंग से समझता हूं, तो आप निम्नतम सॉर्ट_मेट्रिक वाले रिकॉर्ड का चयन करना चाहते हैं, और यदि इनमें से अधिक हैं तो निम्नतम आईडी वाला रिकॉर्ड चुनें। आपका डबल सेल्फजॉइन बदसूरत इन() सूची की नकल नहीं करने के कारण होता है। इसे पूरा करने का दूसरा तरीका सीटीई के माध्यम से है, जिसमें केवल एक सेल्फ-जॉइन की आवश्यकता होती है:
WITH ext AS (
SELECT id,f_key,name,sort_metric
FROM tmp.names
WHERE f_key IN ( 1, 3, 254, 257, 301, 273, 279 )
)
SELECT t1.*
FROM ext t1
WHERE NOT EXISTS (
SELECT *
FROM ext t2
WHERE t2.sort_metric <= t1.sort_metric
AND t2.f_key = t1.f_key
AND t2.id < t1.id
)
ORDER BY t1.id
LIMIT 1
;