查看表格中的以下数据。
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值选择每条记录。 任何帮助都会非常有用。 提前致谢
答案 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;