Ответ 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
Я хочу вывести результаты и подсчитать, сколько из каждого имени вытащили, но без группировки...
Например, я хочу:
John Doe 3
John Doe 3
John Doe 3
Mary Jane 2
Mary Jane 2
вместо этого:
John Doe 3
Mary Jane 2
Это имеет смысл?
Спасибо.
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
SELECT mo.*,
(
SELECT COUNT(*)
FROM mytable mi
WHERE mi.name = mo.name
)
FROM mytable mo
Если вы не хотите использовать подзапрос, вы также можете присоединиться к таблице так: Для этого потребуется подзапрос. Возможно, что-то вроде этого:
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
Это использует 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
SELECT `name`,
(
SELECT COUNT(*)
FROM `table` AS `alt`
WHERE `alt`.`name` = `table`.`name`
) AS `num`
FROM `table`