Nếu tôi hiểu chính xác truy vấn của bạn, bạn dự định chọn bản ghi có sort_metric thấp nhất và nếu có nhiều bản ghi có id thấp nhất. Tự tham gia kép của bạn là do không muốn sao chép danh sách xấu xí trong (). Một cách khác để thực hiện điều này là sử dụng CTE, chỉ cần một tự tham gia:
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
;