假设数据库里有两条数据id与分数,现在我们想知道除了状元头几名的分数,sql语言如下:
select distinct score from 表名 order by score desc limit 数字 offset 数字
解释:
distinct 防止重复分数占位置
order by asc/desc 升降序随意
limit num 取前num条数据
limit 1,4 取第一个数据后4条数据
limit 4 offset 1 与同理(取第一个数据后4条数据)但是更灵活
存在数据库中仅有一条数据或为空的情况,sql语句如下:
select ( select distinct score from 表名 order by score desc limit num offset num)
由于子查询特性,查询内部语句不存在时返回null
也可使用ifnull语句解决问题
select ifnull((select distinct score from 表名 order by score desc limit 1 offset 1),null)