Điều này nên làm điều đó:
SELECT
T1.id,
T1.name,
T1.value,
T1.priority
FROM
My_Table T1
LEFT OUTER JOIN My_Table T2 ON
T2.name = T1.name AND
T2.priority > COALESCE(T1.priority, -1)
WHERE
T2.id IS NULL
Điều này cũng cho phép bạn có nhiều mức ưu tiên với mức cao nhất là mức bạn muốn trả lại (nếu bạn có 1 và 2, thì mức 2 sẽ được trả lại).
Tôi cũng sẽ nói rằng có vẻ như có một số vấn đề thiết kế trong DB. Cách tiếp cận của tôi sẽ là:
My_Table (id, tên) My_Values (id, ưu tiên, giá trị) với một FK trên id đến id. PK trên id trong My_Table và id, ưu tiên trong My_Values. Tất nhiên, tôi cũng sẽ sử dụng các tên bảng thích hợp.