多个COUNT()用于一个查询中的多个条件(MySQL)

Trt*_*rtG 30 mysql sql count

我有这些疑问:

SELECT COUNT(*) FROM t_table WHERE color = 'YELLOW';
SELECT COUNT(*) FROM t_table WHERE color = 'BLUE';
SELECT COUNT(*) FROM t_table WHERE color = 'RED';
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个查询中获得这些结果?

egg*_*yal 53

SELECT color, COUNT(*) FROM t_table GROUP BY color
Run Code Online (Sandbox Code Playgroud)

  • @AdrianBR:这是问题而不是字面意思,并没有看到实际的潜在问题. (14认同)
  • @eggyal`CELECT颜色,COUNT(*)FROM t_table WHERE颜色IN('黄色','蓝色','红色')GROUP BY颜色 (7认同)
  • 如果表有更多颜色,则上面的查询将返回所有颜色,而不仅仅是所选颜色 (2认同)

eis*_*erg 40

如果您希望结果在一行中,您可以使用:

SELECT
    SUM(IF(color = 'YELLOW', 1, 0)) AS YELLOW,
    SUM(IF(color = 'BLUE', 1, 0)) AS BLUE,
    SUM(IF(color = 'RED', 1, 0)) AS RED
FROM t_table
Run Code Online (Sandbox Code Playgroud)

工作实例

  • 或者只是`SUM(color ='YELLOW')`等. (6认同)

Adr*_*nBR 8

SELECT 'yellow' as color ,COUNT(*) FROM t_table WHERE color = 'YELLOW'
union
SELECT 'blue' , COUNT(*) FROM t_table WHERE color = 'BLUE'
union
SELECT 'red',COUNT(*) FROM t_table WHERE color = 'RED';
Run Code Online (Sandbox Code Playgroud)

要么

select color, count(*) from table where color in ('red', 'blue', 'yellow') group by 1
Run Code Online (Sandbox Code Playgroud)

  • 您接受了关于您的请求的唯一错误答案.您接受的答案将返回所有颜色,而不仅仅是您选择的3种颜色. (2认同)