我需要获取表中每个值的计数。问题是我需要从那个表格的 3 列中取出它。
(简化的)数据库表看起来像这样:
+---------+------+--------+------+
| Id | Col1 | Col2 | Col3 |
+---------+------+--------+------+
| 1 | a | a | |
| 2 | b | null | a |
| 3 | b | b | c |
| 4 | d | a | null|
| 5 | a | c | c |
+---------+------+--------+------+
这是我需要的结果:
+-------+-------+
| Col | Count |
+-------+-------+
| a | 5 |
| b | 3 |
| c | 3 |
| d | 1 |
+-------+-------+
有什么建议吗?
编辑:我还想获得具有最高计数的 x 行的顶部,即使在按 asc/desc 对计数或 col 进行排序时,也必须显示 10 HIGHEST。我发现当我按 Count desc 排序时,简单的限制 10 是行不通的。然后我会得到 10 个最低值而不是最高值。
最佳答案
最简单的可能是 UNION ALL
和 GROUP BY
;
SELECT col, COUNT(*) count
FROM (
SELECT col1 col FROM mytable UNION ALL
SELECT col2 col FROM mytable UNION ALL
SELECT col3 col FROM mytable
)z
GROUP BY col
HAVING col IS NOT NULL
ORDER BY count DESC
LIMIT 10
如果您希望将它限制在前 10 名,但订购了另一个方向,you can just wrap it in a subquery and order the outer one .
关于mysql - (Mysql - 计算不同列中表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23616695/