[英]How to fetch all rows from table if like operator value match using mysql?
[英]How to fetch all rows with group by value in mysql?
表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 条记录,请查询我的预期结果。
谢谢你。
尝试这个:
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 中查看结果。
如果您使用的是 mysql 8 或更高版本,则可以使用窗口函数。
select t1.*, count(t1.age) over (partition by t1.age) as same_age_count from table1 t1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.