2

我在 PHPMyAdmin 中有一个包含六列的表。在每个单元格中都有一个名称。

现在我想知道每列中每个名称的频率。

例如:

column1  column2  column3
name1    name3    name2
name1    name2    name2
name2    name3    name1

然后我需要一个列表:

column1           column2   column3
name1 - 2         0         1
name2 - 1         1         2
name3 - 0         2         0

我试着玩:

SELECT Count(*) FROM aanmeldingen2013 WHERE column1 LIKE name1.

有人可以帮助我使用 SQL 代码生成此输出吗?

4

2 回答 2

2

我认为这是最有效的方法:

select name,
       sum(n = 1) as Column1Cnt,
       sum(n = 2) as Column1Cnt,
       sum(n = 3) as Column1Cnt
from (select (case when n.n = 1 then column1
                   when n.n = 2 then column2
                   when n.n = 3 then column3
              end) as name,
             n.n
      from t cross join
           (select 1 as n union all select 2 union all select 3) n
     ) t

这应该比union all查询更有效,因为它只扫描原始表一次。我在这里展示了三列的示例(如您的示例数据中所示)。应该清楚如何将其推广到六列。

于 2013-08-06T13:32:11.267 回答
0

检查这个查询

 SELECT COUNT( * ) FROM 'tbl_name' where column1='name1';
于 2013-08-06T13:35:02.327 回答