假设我有一个这样的表:
Id*|value
对于每个Id
,我想计算相应的值
存在的次数。就像这个示例数据一样:
1, a
2, b
3, a
4, b
5, c
6, a
我想要:
1, a, 3
2, b, 2
3, a, 3
4, b, 2
5, c, 1
6, a, 3
这就是我现在所拥有的,我相信它正在工作,但速度非常慢:
SELECT t1.Id, t1.value, COUNT(t2.value) FROM `table` AS t1
LEFT JOIN `table` AS t2 ON (t1.value = t2.value)
GROUP by t1.Id
我的表包含数千行。关于如何提高这种性能有什么建议吗?
最佳答案
试试这个
SELECT t1.Id, t1.value, t2.cnt FROM Table1 AS t1
INNER JOIN
(
SELECT value, COUNT(value) as cnt
FROM Table1 GROUP BY value
) AS t2 ON (t1.value = t2.value)
ORDER BY t1.Id
或者
SELECT t1.id,t1.value,COUNT(t2.id) AS cnt FROM Table1 AS t1
INNER JOIN Table1 AS t2
ON t1.value = t2.value
GROUP BY t1.id,t1.value
ORDER BY t1.id
关于mysql - 计算重复值 - 帮助我的 mysql 查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812589/