Mysql 如何将IF-ELSE写入此查询以使其工作?

Mysql 如何将IF-ELSE写入此查询以使其工作?,mysql,Mysql,表如下所示:(是的,这些是&符号。忽略破折号) 我需要做的是: 对于每个ID,我需要获得具有最高NUM的值,如果是平局且value具有&s,则它将选择最短的值。如果该值为YES/NO,则它将选择YES 期望的结果 ID-VALUE-NUM -1-NO-----3- -2-YES----1- -3-&------2- 我想我必须在那里的某个地方放一个IF语句,但我不确定怎么放。这里有一种方法。联接查找最大的num。然后,select使用逻辑根据您的规则选择正确的值: select t.i

表如下所示:(是的,这些是
&
符号。忽略破折号)

我需要做的是:

对于每个
ID
,我需要获得具有最高
NUM
的值,如果是平局且
value
具有
&
s,则它将选择最短的值。如果该值为
YES/NO
,则它将选择
YES

期望的结果

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

我想我必须在那里的某个地方放一个
IF
语句,但我不确定怎么放。

这里有一种方法。联接查找最大的
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

返回0行。我想t.id=tm.maxnum上的
有什么问题吗?@Sam。是的,我修好了接头。
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