如何在此查询中编写IF ELSE以使其正常工作?

时间:2013-08-09 02:51:36

标签: mysql

表看起来像这样:(是的那些是&符号。忽略破折号)

ID-VALUE-NUM
-1-YES----2-
-1-NO-----3-
-2-YES----1-
-2-NO-----1-
-3-&&&----1-
-3-&------2-
-3-&&-----2-

我需要做什么:

对于每个ID,我需要获得最高NUM的值,如果是平局且VALUE& s,那么它会选择最短的。如果值为YES/NO,则会选择YES

期望的结果

ID-VALUE-NUM
-1-NO-----3-
-2-YES----1-
-3-&------2-

我想我必须在那里放一个IF声明,但我不确定如何。

1 个答案:

答案 0 :(得分:2)

这是一种方法。联接找到最大num。然后select使用逻辑根据您的规则选择正确的值:

select t.id,
       (case when count(*) = 1 then min(value)
             when max(value like '%&%') > 0 then min(value)
             when max(value = 'Yes') > 0 and max(value = 'No') > 0 then 'Yes'
             else max(value)
        end) as value,
       t.num
from t join
     (select id, max(num) as maxnum
      from t
      group by id
     ) tm
     on t.id = tm.id and t.num = tm.maxnum
group by t.id, t.num