您的位置:首页 > 数据库 > MySQL

mysql排序的问题与获取第几高的分数的信息

2020-08-26 14:03 1061 查看

1:先截图看效果

SELECT * FROM studentscore;
-- ------------------
SET @maxscore=(SELECT MAX(score) FROM studentscore LIMIT 1);
SELECT  MAX(A.score)score FROM studentscore A
INNER join studentscore B  ON A.id=B.id
AND A.score!=@maxscore LIMIT 1;

-- ----------------
SELECT
S.id,S.score,
@myrow:=@myrow+1  AS myrow
FROM
(SELECT id,score
FROM studentscore
ORDER BY score DESC) S,(SELECT @myrow:=0)r ;

-- ------------------
SELECT
S.id,S.score,
(CASE WHEN
@sameScore=S.score THEN @myrow WHEN @sameScore:=S.score THEN @myrow:=@myrow+1 END) AS myrow
FROM
(SELECT id,score
FROM studentscore
ORDER BY score DESC) S,(
SELECT @myrow:=0,@sameScore:= NULL)r ;
-- --------可以求N条----------
SELECT * FROM(
SELECT
S.id,S.score,
(CASE WHEN
@sameScore=S.score THEN @myrow WHEN @sameScore:=S.score THEN @myrow:=@myrow+1 END) AS myrow
FROM
(SELECT id,score
FROM studentscore
ORDER BY score DESC) S,(
SELECT @myrow:=0,@sameScore:= NULL)r
) qq
WHERE myrow=2 -- 可以取 @N高的信息,具体看需求
View Code  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: