MySQL:分组依据和具有条件的aggregate_function

时间:2016-11-23 23:17:38

标签: mysql group-by aggregate-functions

我有这张桌子

  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    

1 个答案:

答案 0 :(得分:0)

您不需要CASE,只需WHERE

SELECT idDevice, MAX(type) AS redType
FROM table
WHERE color = 'red'
GROUP BY idDevice