group by 之后的筛选

目标:实现sql查询,查询某个属性最大(或第几到第几)的行所有信息()

举例:首先需要一张我们进行查询的数据库表:user表

查询出:男和女年龄最大的人的全部信息

853cc5a7bda929600d3f955968084da4135.jpg

方法一:

解决方案:分别查出男女的第n条开始的,m条记录

(select * from `user` 
    where sex="男"
    order by age desc
    limit n,m)

union all

(select * from `user`
    where sex="女"
    order by age desc
    limit n,m)

方法一只限于这种情况,如果将性别换成人的属性(鼠牛羊)来查询最大的信息就不合理了,总不能union十几次吧

方法二:

查询出男女的最大年龄,再通过表连接进行查询其他信息

(select * from user)a

(select sex,max(age) from user group by sex)b

select * from (b left join a on b.sex=a.sex and b.age=a.age)

这里即使将sex换成属性(鼠牛羊)也可以直接查出来了

问题是这里使用了group by 就没办法使用limit了,所以就只能查询最大年龄(或最小年龄的信息)

问题怎么才是查询多条记录呢?

 

转载于:https://my.oschina.net/u/3908739/blog/1929838

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值