我有一个表,在连接后,它给出了以下值:
ID Color
1 BLACK
1 BROWN
1 BLUE
2 BLUE
2 BLACK
我需要编写一个在Color上设置优先级(BROWN> BLACK> BLUE)的查询,这样我就可以根据优先级按ID返回单个值。此查询的结果应返回:
ID Color
1 BROWN
2 BLACK
非常感谢任何帮助。
答案 0 :(得分:1)
选择 不同 Cast((当t.color ='BROWN'然后'1'END || CASE当t.color ='BLACK'然后'2'END || CASE当t.color ='BLUE'然后'3'END)时的情况as INTEGER)as id1,t.color 来自你的表 ORDER BY id1
答案 1 :(得分:0)
这是一种方法:
select t.*
from t
where t.color = (select t2.color
from t t2
where t2.id = t.id
order by (case when color = 'Brown' then 1
when color = 'Black' then 2
when color = 'Blue' then 3
end)
);