在一个GROUP BY中组合多个行

时间:2018-01-02 14:37:15

标签: mysql group-by

我有一张表games,其中包含有关电脑游戏的信息。一个方面是游戏发布的区域。有些游戏已在多个地区发布,这就是为什么有三个区域列:region1region2region3

我想以这种方式对一系列游戏进行分组 - 无论在这三个区域的哪一列中放置相同的区域 - 我最终会得到一个不同区域的列表。

该表格的基本示例:

id | name_of_game | region1 | region2 | region3 
-----------------------------------------------
1    Phoenix        us        fr        de
2    Scramble       fr        uk
3    Defender       ru

我想获得以下输出

region
-------
us
fr
de
uk
ru

我很难找到解决方案。

1 个答案:

答案 0 :(得分:2)

您可以将union用于此

select region1 as region from table
union 
select region2 as region from table
union 
select region3 as region from table

要获得每个地区的游戏数量,您可以使用

select region,count(*)
from(
  select region1 as region,name_of_game from demo where region1 is not null
  union 
  select region2 as region,name_of_game from demo where region2 is not null
  union 
  select region3 as region,name_of_game from demo where region3 is not null
) t
group by region

DEMO