基于多行设置唯一ID的默认值

时间:2018-03-07 19:18:19

标签: sql

我有一个表,在连接后,它给出了以下值:

ID   Color  
1    BLACK  
1    BROWN  
1    BLUE  
2    BLUE  
2    BLACK  

我需要编写一个在Color上设置优先级(BROWN> BLACK> BLUE)的查询,这样我就可以根据优先级按ID返回单个值。此查询的结果应返回:

ID  Color  
1   BROWN  
2   BLACK  

非常感谢任何帮助。

2 个答案:

答案 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)
                );