优先级从表中选择

时间:2014-12-18 17:11:33

标签: mysql sql database

查看表格中的以下数据。

id | type_id | condition_id |
-----------------------------
21    MMM       YES
21    CCC       YES
22    CCC       YES
22    MMM       YES
23    MMM       YES
23    -         YES
23    CCC       YES
24    CCC       YES
25    -         YES
26    CCC       YES
26    -         YES

我希望上述数据的选择查询输出为:

id | type_id | condition_id |
-----------------------------
21    MMM       YES
22    MMM       YES
23    MMM       YES
24    CCC       YES  
25    -         YES
26    -         YES

如果是type_id =' MMM'则从表中选择优先级。是可用的,否则应该选择type_id =' - '将被选中,然后type_id =' CCC'将被选中。但是应该只为一个id值选择每条记录。 任何帮助都会非常有用。 提前致谢

1 个答案:

答案 0 :(得分:1)

在MySQL中,我认为最简单的方法是按您的标准排序,然后选择第一行:

select t.*
from (select t.*,
             (@rn := if(@id = id, @rn + 1,
                        if(@id := id, 1, 1)
                       )
             ) as rn
      from table t cross join
           (select @id := -1, @rn := 0) vars
      order by id, field(type_id, 'MMM', '-', 'CCC')
     ) t
where rn = 1;