Sql语句查询计数数据

Sok*_*iev 0 php mysql sql

我开始学习如何编写sql语言,但我遇到了下面的问题:现在我在一个名为'data'的表中有一个数据

+------+-------+-------+-------+-------+
| id   | name  | type1 | type2 | type3 |
+------+-------+-------+-------+-------+
|    1 | Cake  | a     | b     | f     |
|    2 | Coca  | a     | d     | c     |
|    3 | Ice   | c     | b     | a     |
|    4 | Wine  | c     | e     | d     |
|    5 | Salad | c     | f     | a     |
|    6 | Water | d     | e     | f     |
+------+-------+-------+-------+-------+
Run Code Online (Sandbox Code Playgroud)

我想写一个sql语句来计算type1,type2,type3中出现的所有类型,所以我想得到的结果是

+------+------+
| type | count|
+------+------+
|    a | 4    |
|    b | 2    |
|    c | 4    |
|    d | 3    |
|    e | 2    |
|    f | 3    |
+------+------+
Run Code Online (Sandbox Code Playgroud)

假设我们并不确切知道有多少种不同类型和数量的列,那么您能否指导我如何处理这个问题?哦,我应该在级别编程语言而不是sql中解决它吗?我在Symfony2上使用php.

提前致谢,

Joh*_*Woo 8

SELECT  type, COUNT(*) count
FROM    
    (
        SELECT  type1 type FROM data
        UNION ALL
        SELECT  type2 type FROM data
        UNION ALL
        SELECT  type3 type FROM Data
    ) AS subquery
GROUP   BY type
Run Code Online (Sandbox Code Playgroud)

OUTPUT

????????????????
? TYPE ? COUNT ?
????????????????
? a    ?     4 ?
? b    ?     2 ?
? c    ?     4 ?
? d    ?     3 ?
? e    ?     2 ?
? f    ?     3 ?
????????????????
Run Code Online (Sandbox Code Playgroud)