【发布时间】:2014-04-01 16:24:50
【问题描述】:
我有这些数据表
+---------+---------+---------+---------+
| format1 | format2 | format3 | format4 |
+---------+---------+---------+---------+
| 1 | 1 | 3 | 4 |
| 1 | 2 | 3 | 7 |
| 1 | 1 | 3 | 7 |
| 1 | 2 | 2 | 3 |
| 2 | 1 | 7 | 1 |
| 2 | 2 | 7 | 34 |
| ... | ... | ... | ... |
+---------+---------+---------+---------+
我需要一个代表下一个方案的查询:将整个数据表的唯一(不同)值放在第一列中,并计算每种格式的重复次数,如下所示:
+---------+-----------+-----------+-----------+-----------+
| format | f1 count | f2 count | f3 count | f4 count |
+---------+-----------+-----------+-----------+-----------+
| 1 | 4 | 3 | null | 1 |
| 2 | 2 | 3 | 1 | null |
| 3 | null | null | 3 | 1 |
| 4 | null | null | null | 1 |
| 7 | null | null | 2 | 2 |
| 34 | null | null | null | 1 |
| ... | ... | ... | ... | ... |
+---------+-----------+-----------+-----------+-----------+
第一列表示插入到使用此查询检索的所有表列中的所有数字的不同列表(按 ASC 排序)
SELECT distinct format1 AS val
FROM table
UNION
SELECT distinct format2 AS val
FROM table
UNION
SELECT distinct format3 AS val
FROM table
UNION
SELECT distinct format4 AS val
FROM table
ORDER BY val ASC
每一列(首先排除)是数字在相应格式中出现的次数。
我尝试组合多个 SELECT 查询失败(这取决于有多少格式)。
如何将它们全部结合起来?
【问题讨论】:
-
这是作业题吗?如果是这样,那就太荒谬了。
-
是的……你有解决办法吗?