MySQL计数重复行

时间:2011-08-15 14:46:02

标签: mysql database

我有一张这样的表:

jobid, orderid

内部有一些数据:

jobid, orderid
1245, 6767
1235, 9058
6783, 6767
4991, 6767
9512, 9058
5123, 1234

现在我想要以下输出:

jobid, orderid, orderid(total)
1245, 6767, 3
1235, 9058, 2
6783, 6767, 3
4991, 6767, 3
9512, 9058, 2
5123, 1234, 1

现在,COUNT()不能按照我想要的方式工作,我可能需要一些小组,但我不知道如何。

提前致谢。

5 个答案:

答案 0 :(得分:5)

看起来你正试图获得看起来像jobid, orderid, number of times that orderid appears的行。为此,您可以使用子查询:

 SELECT jobid, orderid, 
        (SELECT COUNT(*) FROM 
         MY_TABLE INR 
             WHERE INR.orderid = OTR.orderid) as "orderid(total)"
 FROM MY_TABLE OTR

答案 1 :(得分:2)

SELECT jobid, orderid, count(orderid)
FROM sometable
GROUP BY orderid, jobid

答案 2 :(得分:2)

SELECT t.jobid
     , t.orderid
     , grp.orderid_total
FROM
    tableX AS t
  JOIN
    ( SELECT orderid
           , COUNT(*) AS orderid_total
      FROM tableX
      GROUP BY orderid
    ) AS grp
      ON grp.orderid = t.orderid

答案 3 :(得分:2)

为什么这样做?您将进行大量冗余计数,并对您的服务器施加很多不必要的压力。我会用两个查询来做到这一点:

SELECT jobid, orderid FROM my_table

获取完整列表,然后:

SELECT orderid, COUNT(*) FROM my_table GROUP BY orderid

获取每个orderid的总数。然后将这两个结果合并到您的应用程序中这将比您的解决方案快得多。

答案 4 :(得分:0)

select jobid, orderid, count(*) from table group by orderid;