计算表的任何列中值的外观

时间:2013-06-04 22:03:10

标签: 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有一些方法可以很好地处理这个问题。

2 个答案:

答案 0 :(得分:1)

这是使用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

答案 1 :(得分:0)

试试这个

 select name , count(*) as appearances from
 (
     select col1 as name  from Raw
     union all
     select col2 as name   from Raw 
 )t
 group by name

DEMO HERE