MySQL: считать записи без группировки? - PullRequest
14 голосов
/ 11 августа 2009

Я хочу получить результаты и посчитать, сколько из каждого имени получено, но без группировки ...

например, я хочу это:

John Doe 3
John Doe 3
John Doe 3
Mary Jane 2
Mary Jane 2

вместо этого:

John Doe 3
Mary Jane 2

Имеет ли это смысл?

Спасибо.

Ответы [ 6 ]

10 голосов
/ 11 августа 2009
SELECT b.name, a.the_count
FROM
  some_table b, 
  (SELECT name, COUNT(*) AS the_count
  FROM some_table
  GROUP BY name) AS a
WHERE b.name = a.name
3 голосов
/ 11 августа 2009

Используется group by, но выводится в нужном формате.

SELECT Name, NG.NameCount
FROM Names
INNER JOIN
    (SELECT Name, Count(1) As NameCount
    FROM Names
    GROUP BY Name) NG
ON Names.Name = NG.Name
2 голосов
/ 11 августа 2009

Если вы не хотите использовать подзапрос, вы также можете присоединить таблицу к себе следующим образом: Это потребует подзапроса. Возможно, что-то вроде этого:

SELECT t1.name, COUNT(t2.name)
FROM my_table AS t1
INNER JOIN my_table AS t2 ON (t1.primary_key_field = t2.primary_key_field)
WHERE some_conditions
GROUP BY t1.name
2 голосов
/ 11 августа 2009
SELECT  mo.*,
        (
        SELECT  COUNT(*)
        FROM    mytable mi
        WHERE   mi.name = mo.name
        )
FROM    mytable mo
0 голосов
/ 23 марта 2018

Может быть, считать по разделу?

select 
     p.name,
     count(p.name) over (partition by p.name) as counted
from some_table as p
order by counted desc
0 голосов
/ 11 августа 2009
SELECT `name`,
    (
        SELECT COUNT(*)
        FROM `table` AS `alt`
        WHERE `alt`.`name` = `table`.`name`
    ) AS `num`
FROM `table`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...