繁体   English   中英

MySQL:按条件分组和aggregate_function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM