MySQL: считать записи без группировки?

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

Например, я хочу:

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

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

John Doe 3
Mary Jane 2

Это имеет смысл?

Спасибо.

Ответы

Ответ 1

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

Ответ 2

SELECT  mo.*,
        (
        SELECT  COUNT(*)
        FROM    mytable mi
        WHERE   mi.name = mo.name
        )
FROM    mytable mo

Ответ 3

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

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

Ответ 4

Это использует 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

Ответ 5

SELECT `name`,
    (
        SELECT COUNT(*)
        FROM `table` AS `alt`
        WHERE `alt`.`name` = `table`.`name`
    ) AS `num`
FROM `table`