MySQL返回每个元素的计数并返回该元素的所有匹配项

时间:2017-02-09 17:24:34

标签: mysql sql

我可以使用以下MySQL来计算每个元素出现的次数

SELECT COUNT(*) AS count
FROM example
GROUP BY example.value

问题是,由于GROUP BY语句,不会返回重复记录及其COUNT值。

IE我需要这个:

  1. apples - 2
  2. apples - 2
  3. oranges - 1
  4. 香蕉 - 3
  5. 香蕉 - 3
  6. 香蕉 - 3
  7. 但我明白了:

    1. apples - 2
    2. oranges - 1
    3. 香蕉 - 3
    4. 有什么想法可以做到这一点?我正在考虑某种联接,但我无法弄清楚将表格与自身进行比较的正确方法

2 个答案:

答案 0 :(得分:2)

您可以使用JOIN

select a.*, b.cnt
from example a
join (
    select value, count(*) cnt
    from example
    group by value
    ) b on a.value = b.value;

答案 1 :(得分:2)

SELECT e.value, t.count 
FROM example e
LEFT JOIN (SELECT value, COUNT(*) AS count
  FROM example
  GROUP BY example.value) t
ON e.value = t.value;