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