如何统计SQL中多列出现的次数

Tra*_*Fry 5 mysql sql count multiple-columns

我在 SQL 中有下表

TV_Show | genre_1 | genre_2 |
  a     | action  | sci-fi  |
  b     | sci-fi  | comedy  |
  c     | comedy  | romance |
  d     | action  | sci-fi  |
  .     |    .    |    .    |
  .     |    .    |    .    |
  .     |    .    |    .    |
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询,该查询将计算整个表中每种不同的、独特的流派出现的次数。我想要以下结果。此输出的顺序并不重要:

action    2
sci-fi    3
comedy    2
romance   1
  .       .
  .       .
  .       .
Run Code Online (Sandbox Code Playgroud)

SQL 查询应该是什么?

编辑 我已经尝试运行以下命令,但它不起作用:

SELECT genre1 OR genre2, COUNT(*) FROM tv_show GROUP BY genre1 OR genre2
Run Code Online (Sandbox Code Playgroud)

编辑2

此示例是我的实际 SQL 表的简化。我的实际表还有其他包含不同数据的列。但我只有两genre列我想对其进行查询。

Gor*_*off 4

使用union all和聚合:

select genre, count(*)
from ((select genre_1 as genre from tv_show) union all
      (select genre_2 as genre from tv_show)
     ) g
group by genre;
Run Code Online (Sandbox Code Playgroud)

通过简单的修改,您可以为每列添加计数:

select genre, count(*), sum(first), sum(second)
from ((select genre_1 as genre, 1 as first, 0 as second from tv_show) union all
      (select genre_2 as genre, 0, 1 from tv_show)
     ) g
group by genre;
Run Code Online (Sandbox Code Playgroud)