【发布时间】:2019-08-27 13:27:41
【问题描述】:
使用 MySQL 表,例如:
id | colA | colB
...| 1 | 13
...| 1 | 13
...| 1 | 12
...| 1 | 12
...| 1 | 11
...| 2 | 78
...| 2 | 78
...| 2 | 78
...| 2 | 13
...| 2 | 13
...| 2 | 9
对于colA 中的每个值,我想找到colB 中出现频率最高的N 个值。
N=2 的示例结果:
colA | colB
1 | 13
1 | 12
2 | 78
2 | 13
我可以使用以下方法获得 colA 和 colB 的所有独特组合及其频率:
SELECT colA, colB, COUNT(*) AS freq FROM t GROUP BY colA, colB ORDER BY freq DESC;
示例结果:
colA | colB | freq
1 | 13 | 2
1 | 12 | 2
1 | 11 | 1
2 | 78 | 3
2 | 13 | 2
2 | 9 | 1
但我很难为colA 中的每个值而不是整个表应用LIMIT。
这基本上就像How to select most frequent value in a column per each id group?,只是用于 MySQL 而不是 PostgreSQL。
我目前正在使用 MariaDB 10.1。
【问题讨论】:
-
你的主键是什么?
-
colA和colB都不是主键。 -
查看我添加的标签。
标签: mysql select mariadb groupwise-maximum