我有这张桌子
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
答案 0 :(得分:0)
您不需要CASE
,只需WHERE
。
SELECT idDevice, MAX(type) AS redType
FROM table
WHERE color = 'red'
GROUP BY idDevice