关于分组依据和自定义组的简单问题

ale*_*lex 6 mysql

想象一个只有 2 列的 MySQL 表:一个 id 和一个颜色名称。

通过这个查询,我知道每种颜色有多少个 id:

SELECT color_name, count(id) FROM color_table GROUP BY (color_name)

red:    10 
blue:   5 
yellow: 3
green:  1
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法可以指定“分组依据”一些自定义组?我的意思是,是否有一个查询会导致以下结果:

red: 10
colors different than red: 9
Run Code Online (Sandbox Code Playgroud)

Stu*_*Stu 5

不确定 MYSQL,但您可以在 SQL Server 的 Group BY 中使用 CASE。

SELECT  CASE color_name
      WHEN 'red' THEN 'red'
      ELSE 'colors different than red'
    END AS color_group
   ,Count(id)
FROM    color_table
GROUP BY CASE color_name
      WHEN 'red' THEN 'red'
      ELSE 'colors different than red'
    END
Run Code Online (Sandbox Code Playgroud)


Der*_*ney 4

直接用GROUP BY,不行。不过,您仍然可以获得您想要的结果,并且有很多方法可以实现它。例如UNION

SELECT 'red', COUNT(*) FROM color_table WHERE color_name='red'
UNION
SELECT 'colors different than red', COUNT(*) FROM color_table WHERE color_name <> 'red'
Run Code Online (Sandbox Code Playgroud)