mysql5.7使用變量進行分組排名并實現(xiàn)篩選
更新時間:2024年05月01日 09:12:16 作者:好大的月亮
這篇文章主要介紹了mysql5.7使用變量進行分組排名并實現(xiàn)篩選方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
概述
mysql到8.0之后就有rank和desc_rank函數(shù)了,但是在5.7沒這玩意,想實現(xiàn)一個分組排名得靠自己手擼了.
分組排名
student
表就id/姓名/分數(shù)/班級幾個字段,加上class
表就id/name兩個字段。
需求是查詢每個班級分數(shù)排名前三的所有人(不是3個人是所有人)
SELECT @last_class := st.class, CASE WHEN st.class = @last_class THEN CASE WHEN @score = st.score THEN @rank WHEN ( @score := st.score ) IS NOT NULL THEN @rank := @rank + 1 END ELSE @rank := 1 END rank, st.* FROM student st,( SELECT @score := NULL, @rank := 0, @last_class := NULL ) a ORDER BY st.class, st.score desc
結果
篩選
#EXPLAIN SELECT a.id AS studentId, NAME, a.class, a.score FROM ( SELECT @last_class := st.class, CASE WHEN st.class = @last_class THEN CASE WHEN @score = st.score THEN @rank WHEN ( @score := st.score ) IS NOT NULL THEN @rank := @rank + 1 END ELSE @rank := 1 END rank, st.* FROM student st,( SELECT @score := NULL, @rank := 0, @last_class := NULL ) aa ORDER BY st.class, st.score DESC ) a where a.rank <= 3
結果
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL中實現(xiàn)高性能高并發(fā)計數(shù)器方案(例如文章點擊數(shù))
這篇文章主要介紹了MySQL中實現(xiàn)高性能高并發(fā)計數(shù)器方案,本文中的計數(shù)器是指如文章的點擊數(shù)、喜歡數(shù)、瀏覽次數(shù)等,需要的朋友可以參考下2014-10-10mysql 5.7.13 安裝配置方法圖文教程(win10)
這篇文章主要為大家分享了mysql 5.7.13 安裝配置方法圖文教程,感興趣的朋友可以參考一下2016-06-06解決Mysql5.7.17在windows下安裝啟動時提示不成功問題
這篇文章主要介紹了解決Mysql5.7.17在windows下安裝啟動時提示不成功問題,需要的朋友可以參考下2017-03-03Mysql 5.6 "隱式轉換"導致的索引失效和數(shù)據不準確的問題
這篇文章主要介紹了Mysql 5.6 “隱式轉換”導致的索引失效和數(shù)據不準確的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12MySQL 中 datetime 和 timestamp 的區(qū)別與選擇
MySQL 中常用的兩種時間儲存類型分別是datetime和 timestamp。如何在它們之間選擇是建表時必要的考慮。下面就談談他們的區(qū)別和怎么選擇,需要的朋友可以參考一下2021-09-09