目标:实现sql查询,查询某个属性最大(或第几到第几)的行所有信息()
举例:首先需要一张我们进行查询的数据库表:user表
查询出:男和女年龄最大的人的全部信息
方法一:
解决方案:分别查出男女的第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了,所以就只能查询最大年龄(或最小年龄的信息)
问题怎么才是查询多条记录呢?