计算某些内容出现在列中并记录的次数

时间:2015-01-28 11:15:40

标签: mysql

因此,为了知道表中有多少人被称为Johnny,我需要执行以下查询。

查询:

Select count(*) from mytable where first  = 'Johnny';

结果会给我2个。

我想要做的是在count列中记录这个数字,以便最终结果如下所示。

+--------+----------+
| First  | COUNT    |
+--------+----------+
| Johnny |        2 |
| Diane  |        1 |
| Johnny |        2 |
| Harold |        1 |
| Amy    |        3 |
| Roy    |        2 |
| Amy    |        3 |
| Amy    |        3 |
| Roy    |        2 |
+--------+----------+

是否有任何查询或程序能够导致此类输出?

2 个答案:

答案 0 :(得分:1)

要获得准确的输出,您需要use a subquery

select
    mytable.First,
    counts.`COUNT`
from
    mytable
join (
    select
        First,
        count(*) `COUNT`
    from
        mytable
    group by
        First
) counts on mytable.First = counts.First;

答案 1 :(得分:0)

试试这个:

SELECT T1.First, T2.COUNT
FROM mytable T1 JOIN
     (SELECT First, COUNT(*) as COUNT
      FROM mytable
      GROUP BY First) as T2 ON T1.First=T2.First

结果将是:

+--------+----------+ 
| First  | COUNT    |
+--------+----------+
| Johnny |        2 |
| Diane  |        1 |
| Johnny |        2 |
| Harold |        1 |
| Amy    |        3 |
| Roy    |        2 |
| Amy    |        3 |
| Amy    |        3 |
| Roy    |        2 |
+--------+----------+