[英]MySQL: Group by and aggregate_function with condition
我有这张桌子
id | idDevice | type | color
-----------------------------
1 | 1 | a | red
2 | 1 | b | green
3 | 1 | c | red
4 | 2 | a | blue
5 | 2 | b | red
每个idDevice
具有至少一个type
与红color
。
我想为每个idDevice
使用带有GROUP BY语句的,具有红色(不是唯一的) color
type
,如下所示:
SELECT idDevice,
CASE WHEN color = red THEN type END as redType
FROM table
GROUP BY idDevice
不幸的是,上述方法不起作用,因为即使存在红色的类型,它有时也会返回NULL redType。 是否可以使用GROUP BY语句获取正确的redType?
我正在寻找这个:
idDevice | redType
-----------------------------
1 | a
2 | b
或此结果:
idDevice | redType
-----------------------------
1 | c
2 | b
您不需要CASE
,只需WHERE
。
SELECT idDevice, MAX(type) AS redType
FROM table
WHERE color = 'red'
GROUP BY idDevice
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.