最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql5.7使用變量進(jìn)行分組排名并實(shí)現(xiàn)篩選

 更新時(shí)間:2024年05月01日 09:12:16   作者:好大的月亮  
這篇文章主要介紹了mysql5.7使用變量進(jìn)行分組排名并實(shí)現(xiàn)篩選方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

概述

mysql到8.0之后就有rank和desc_rank函數(shù)了,但是在5.7沒這玩意,想實(shí)現(xiàn)一個(gè)分組排名得靠自己手?jǐn)]了.

分組排名

student表就id/姓名/分?jǐn)?shù)/班級(jí)幾個(gè)字段,加上class表就id/name兩個(gè)字段。

需求是查詢每個(gè)班級(jí)分?jǐn)?shù)排名前三的所有人(不是3個(gè)人是所有人)

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

結(jié)果

篩選

#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

結(jié)果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談MySQL中的自增主鍵用完了怎么辦

    淺談MySQL中的自增主鍵用完了怎么辦

    這篇文章主要介紹了淺談MySQL中的自增主鍵用完了怎么辦,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL分區(qū)表和分桶表的操作詳解

    MySQL分區(qū)表和分桶表的操作詳解

    這篇文章主要介紹了MySQL分區(qū)表和分桶表的操作,分區(qū)表和分桶表都是數(shù)據(jù)庫(kù)中的表,用于對(duì)數(shù)據(jù)進(jìn)行分區(qū)或分桶存儲(chǔ),以提高數(shù)據(jù)庫(kù)的性能和查詢效率,需要詳細(xì)了解可以參考下文
    2023-05-05
  • MySQL 使用自定義變量進(jìn)行查詢優(yōu)化

    MySQL 使用自定義變量進(jìn)行查詢優(yōu)化

    MySQL自定義變量估計(jì)很少人有用到,但是如果用好了也是可以輔助進(jìn)行性能優(yōu)化的。需要注意的是變量是基于連接會(huì)話的,而且可能存在一些意外的情況,需要小心使用。本篇介紹如何利用自定義變量進(jìn)行查詢優(yōu)化,提高效率
    2021-05-05
  • 一篇文章徹底搞定MySQL中的JSON類型(效率非???

    一篇文章徹底搞定MySQL中的JSON類型(效率非???

    這篇文章主要介紹了關(guān)于MySQL中JSON類型的相關(guān)資料,MySQL?5.7.8引入JSON數(shù)據(jù)類型,提供原生支持,相比字符類型,具有優(yōu)勢(shì),JSON數(shù)據(jù)類型對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,自動(dòng)將布爾類型轉(zhuǎn)換為小寫,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問題

    從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問題

    這篇文章主要介紹了從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問題的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • MySQL表添加某一列和刪除某一列的方法

    MySQL表添加某一列和刪除某一列的方法

    MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它是一種開源的軟件,由瑞典的MySQL?AB公司開發(fā)的,這篇文章主要介紹了關(guān)于MySQL表添加某一列和刪除某一列的sql語句,需要的朋友可以參考下
    2023-06-06
  • JMeter壓測(cè)Mysql教程分享

    JMeter壓測(cè)Mysql教程分享

    文章介紹了如何使用JMeter進(jìn)行數(shù)據(jù)庫(kù)壓力測(cè)試的步驟,包括安裝JMeter、下載并配置MySQL JDBC驅(qū)動(dòng)、設(shè)置測(cè)試計(jì)劃、添加JDBC連接配置元件、添加JDBC請(qǐng)求取樣器以及可選的監(jiān)聽器配置,最后,文章指導(dǎo)如何運(yùn)行測(cè)試并分析結(jié)果,以評(píng)估數(shù)據(jù)庫(kù)在不同壓力下的性能表現(xiàn)
    2024-11-11
  • mysql 5.7.18 MSI安裝圖文教程

    mysql 5.7.18 MSI安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.18 MSI安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • MySQL數(shù)據(jù)庫(kù)高危權(quán)限回收的實(shí)現(xiàn)

    MySQL數(shù)據(jù)庫(kù)高危權(quán)限回收的實(shí)現(xiàn)

    本文介紹MySQL數(shù)據(jù)庫(kù)的基本操作指令,包括查看和切換數(shù)據(jù)庫(kù)等,詳細(xì)講解了如何統(tǒng)計(jì)環(huán)境中的用戶及權(quán)限,并提供了權(quán)限回收的方法,包括回收高危權(quán)限和重新授權(quán)必要權(quán)限的過程,感興趣的可以了解一下
    2026-01-01
  • MySQL修改root密碼的4種方法(小結(jié))

    MySQL修改root密碼的4種方法(小結(jié))

    這篇文章主要介紹了MySQL修改root密碼的4種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論

江门市| 安福县| 新兴县| 古交市| 安丘市| 汉阴县| 屯留县| 肇州县| 许昌县| 宿松县| 威远县| 方正县| 靖远县| 霍州市| 改则县| 保定市| 巫溪县| 平远县| 建宁县| 武强县| 治县。| 清水县| 河曲县| 张家界市| 利辛县| 防城港市| 香河县| 宜兰县| 大渡口区| 河南省| 施甸县| 乌拉特前旗| 津南区| 齐齐哈尔市| 峨山| 即墨市| 宜宾市| 郁南县| 舞钢市| 修武县| 六安市|