mysql - 计算一个值在表的任何列中的出现次数

标签 mysql sql join subquery left-join

如何计算一个值在多列中出现的总次数?

原始表:

col1   col2
----   ----
don    sam
jon    sam
mike   lisa
sam    lisa
lisa   beth

结果:

name   appearances
----   -----------
don    1
sam    3
jon    1
mike   1
lisa   3
beth   1

我试过编写一个连接,其中获取总计数是一个子查询,但这看起来很尴尬。我假设 MySQL 有某种方法可以很好地处理这个问题。

最佳答案

这是使用 UNION ALL 的一种方法:

select name, count(1) cnt
from (
  select col1 as name from yourtable
  union all
  select col2 from yourtable
  ) t
group by name

结果:

NAME   CNT 
-----------
beth   1
don    1
jon    1
lisa   3
mike   1
sam    3

关于mysql - 计算一个值在表的任何列中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928289/

相关文章:

sql - 修改配置单元查询以强制超过 1 个 reducer

mysql - 在 mysql 中使用 SOME 查询没有给出预期结果。?

mysql - 更新表。 SET语句语法错误?

java - 连接到数据库时 DataGrip 和 DBeaver(基于 Java 的数据库 IDE)出错

用于搜索两个表的Mysql查询结构

mysql - 计算mysql中一行中的项目数

php - 在查询中不使用空格和短表别名有什么好处吗?

PHP 如何一次运行一个部分的 sql 查询?

MySQL:跨多个表的多列连接?

sql - 初学者多连接问题