MySql教程

MySQL 查询第N高

本文主要是介绍MySQL 查询第N高,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、如图查询第N高的score

 

二、思路 

1、创建辅助变量@temp记录当前分数,@sort记录排序

SELECT @sort:=0,@temp:=NULL;

 

2、使用ORDER BY进行分数排序

SELECT * FROM score s,( SELECT @sort:=0,@temp:=NULL) re ORDER BY s.score DESC;

  

3、使用IF函数根据分数判定排名,并更新@temp为当前分数

SELECT
  s.*,
  @sort:=IF(@temp=s.score,@sort,@sort+1) AS rank,
  @temp:=score AS val
FROM score s,
  (SELECT
     @sort:=0,
     @temp:=NULL) re
ORDER BY s.score DESC;

 

4、在排序结果中查出最终第N的分数 

SELECT
  score,
  rank
FROM (SELECT
        s.*,
        @sort:=IF(@temp=s.score,@sort,@sort+1) AS rank,
        @temp:=score AS val
      FROM score s,
        (SELECT
           @sort:=0,
           @temp:=NULL) re
      ORDER BY s.score DESC) res
WHERE rank = 2;

 

这篇关于MySQL 查询第N高的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!