mysql年龄最大的,mysql 查找重复姓名且年龄最大的列表

mysql> select count(*) as count ,name,sum(age) as age from t1 group by name order by count desc;+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | atest | 64 || 2 | btest | 37 || 2 | ctest | 43 || 2 | dtest | 43 || 1 | mary | 22 || 1 | kou | 22 || 1 | perter | 23 || 1 | kate | 19 |+-------+--------+------+8 rows in set (0.00 sec)

这里找到count 重复的数据

下面接着找 count 最大,切age 最大且相同的数据

mysql> select count,name,age from ( select count(*) as count ,name,sum(age) as age from t1 group by name order by count desc ,age desc ) as tmp group by count order by count desc ,age desc;+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | atest | 64 || 2 | ctest | 43 || 1 | perter | 23 |+-------+--------+------+3 rows in set (0.00 sec)

为什么少了一条 dtest ,dtest的数据和ctest在count和age上是一样的?

求指教!谢谢

回复讨论(解决方案)

第二式有 group by count,那么 count 相同的肯定在一组了

既然

| 2 | ctest | 43 |

| 2 | dtest | 43 |

在一组,那自然只能出现一个了

所以分组条件应加上 age,即 group by count,age

mysql> select count(*) as count ,name,sum(age) as age from t1 group by name order by count desc, ae desc ;+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | zx | 64 || 2 | xz | 43 || 2 | john | 43 || 2 | tom | 37 || 1 | perter | 23 || 1 | mary | 22 || 1 | kou | 22 || 1 | kate | 19 |+-------+--------+------+8 rows in set (0.00 sec)mysql> select count,name,age from ( select count(*) as count ,name,sum(age) as age from t1 group b name order by count desc ,age desc ) as tmp group by count,age order by count desc ,age desc;+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | zx | 64 || 2 | xz | 43 || 2 | tom | 37 || 1 | perter | 23 || 1 | mary | 22 || 1 | kate | 19 |+-------+--------+------+6 rows in set (0.00 sec)

这个结果不对吧?

预期的结果应该是:

+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | atest | 64 || 2 | ctest | 43 || 2 | dtest | 43 || 1 | perter | 23 |+-------+--------+------+

select count,name,age from ( select count(*) as count ,name,sum(age) as age from t1 group b

name order by count desc ,age desc ) as tmp group by count, name order by count desc ,age desc;

mysql> select count,name,age from ( select count(*) as count ,name,sum(age) as age from t1 group by name order by count desc ,age desc ) as tmp group by count,name order by count desc ,age desc;+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | zx | 64 || 2 | xz | 43 || 2 | john | 43 || 2 | tom | 37 || 1 | perter | 23 || 1 | kou | 22 || 1 | mary | 22 || 1 | kate | 19 |+-------+--------+------+8 rows in set (0.00 sec)

group by count,name 这样找不到 count=2且age最大的数据和count=1且age最大的数据了~

+-------+--------+------+| count | name | age |+-------+--------+------+| 3 | atest | 64 || 2 | ctest | 43 || 2 | dtest | 43 || 1 | perter | 23 |+-------+--------+------+

这种预期的结果,能在一条sql里体现出来么?

求指教

感觉效率应该不是很高,虽然可以做出来

(select count,max(age) as age from ( select count(*) as count ,name,sum(age) as age from t1 group by name order by count desc ,age desc ) as tmp group by count order by count desc ,age desc) as tempd,( select count(*) as count ,name,sum(age) as age from t1 group by name order by count desc ,age desc ) as tmp1 where tmp1.count=tempd.count and tmp1.age=tempd.age count order by tempd.count desc ,tempd.age desc;

select tmp1.count,tmp1.age from (select count,max(age) as age from ( select count(*) as count ,name,sum(age) as age from t1 group by

name order by count desc ,age desc ) as tmp group by count order by count desc ,age desc) as tempd,( select count(*) as count ,name,sum(age) as age from t1 group by

name order by count desc ,age desc ) as tmp1 where tmp1.count=tempd.count and tmp1.age=tempd.age count order by tmp1.count desc ,tmp1.age desc;

非常感谢版主

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值