表1中的记录,
id name age ------------------- 1 xxx 12 2 yyy 21 3 zzz 12 4 aaa 19 5 ccc 21 6 fff 12
我需要这样的结果,
id name age same_age_count ----------------------------------- 1 xxx 12 3 2 yyy 21 2 3 zzz 12 3 4 aaa 19 1 5 ccc 21 2 6 fff 12 3
This is what my expected result.
注意: same_age_count是表中重复年龄的计数值。
我试过这个查询,
select *, count(age) as same_age_count from table1 group by(age); id name age same_age_count ----------------------------------- 1 xxx 12 3 2 yyy 21 2 3 aaa 19 1
但它只返回3条记录,请给我一个查询我的预期结果..
谢谢。
答案 0 :(得分:4)
试试这个:
SELECT T1.*,T2.same_age_count
FROM TableName T1
JOIN
(SELECT age,Count(age) as same_age_count
FROM TableName
GROUP BY age) T2
ON T1.age=T2.age
结果:
ID NAME AGE SAME_AGE_COUNT
1 xxx 12 3
2 yyy 21 2
3 zzz 12 3
4 aaa 19 1
5 ccc 21 2
6 fff 12 3
请参阅SQL Fiddle中的结果。
答案 1 :(得分:0)
如果您使用的是mysql 8或更高版本,则可以使用窗口函数。
从表1 t1中选择t1。*,将(t1.age)计数为(t1.age划分的)as same_age_count;