我有这张桌子
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
一个具有type
红色(不是唯一)的color
,并使用GROUP BY语句,如下所示: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
关于mysql - MySQL:按条件分组和aggregate_function,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40775720/