我开始学习如何编写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.
提前致谢,
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)