繁体   English   中英

如何在mysql中按值获取所有行?

[英]How to fetch all rows with group by value in mysql?

我有一个表说 table1,它有 3 列,如 id、name 和 age。

表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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM