MySQL считает повторяющуюся строку - PullRequest
1 голос
/ 15 августа 2011

У меня есть такая таблица:

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 ]

5 голосов
/ 15 августа 2011

Похоже, вы пытаетесь получить строки, которые выглядят как 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
2 голосов
/ 15 августа 2011

Почему так? Вы будете делать много лишних подсчетов и будете оказывать огромное ненужное давление на свой сервер. Я бы сделал это с двумя запросами:

SELECT jobid, orderid FROM my_table

, чтобы получить полный список, а затем:

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

чтобы получить общее количество для каждого заказа. Затем объедините эти два результата в вашем приложении. Это будет намного быстрее, чем ваше решение.

2 голосов
/ 15 августа 2011
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
2 голосов
/ 15 августа 2011
SELECT jobid, orderid, count(orderid)
FROM sometable
GROUP BY orderid, jobid
0 голосов
/ 15 августа 2011
select jobid, orderid, count(*) from table group by orderid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...