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

时间:2014-05-01 07:20:19

标签: mysql sql

我有一张桌子说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条记录,请给我一个查询我的预期结果..

谢谢。

2 个答案:

答案 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;