Подобно этому вопросу здесь MySQL: подсчет вхождения отдельных значений
Однако я хотел бы возвращать каждое отдельное вхождение строки, со счетом для имени. т.е.
ожидаемый результат:
id name count
----- ------ ------
1 Mark 2
2 Mike 3
3 Paul 1
4 Mike 3
5 Mike 3
6 John 1
7 Mark 2
Я могу добиться этого с помощью подзапроса, но в моем конкретном примере есть сложный основной запрос для фильтрации результатов вниз, и я бы хотел избежать дублирования этого запроса для достижения правильных значений.
Вы могли бы сделать что-то вроде
select a.*,b.cnt
from demo a
join (
select name,count(*) cnt
from demo
group by name
) b using(name)
Во внутреннем запросе вычисляйте счетчик для каждого пользователя, а затем выполняйте самосоединение с таблицей путем сопоставления имени и количества показаний из внутреннего запроса по каждой записи