mysql使用GROUP BY分組實(shí)現(xiàn)取前N條記錄的方法
本文實(shí)例講述了mysql使用GROUP BY分組實(shí)現(xiàn)取前N條記錄的方法。分享給大家供大家參考,具體如下:
MySQL中GROUP BY分組取前N條記錄實(shí)現(xiàn)
mysql分組,取記錄
GROUP BY之后如何取每組的前兩位下面我來講述mysql中GROUP BY分組取前N條記錄實(shí)現(xiàn)方法。
這是測試表(也不知道怎么想的,當(dāng)時表名直接敲了個aa,汗~~~~):

結(jié)果:

方法一:
拆開分析:
<!--[if !supportLists]-->1、 <!--[endif]-->LEFT JOIN aa b ON a.ClsNo=b.ClsNo AND a.Score<b.Score
同一個班級(每個班級四個人),分?jǐn)?shù)比當(dāng)前學(xué)生高的記錄,那就意味這成績墊底的學(xué)生,將會產(chǎn)生三條記錄
<!--[if !supportLists]-->2、 <!--[endif]-->group by a.id,a.SName,a.ClsNo,a.Score having count(b.id)<2
a.id,a.SName,a.ClsNo,a.Score可以代表一個學(xué)生(以學(xué)生分組),如果count(b.id)<2(成績超過你的人不能多于2個),那就只剩第一第二了。
方法二:
這個我覺得是比較有意思的,取每一條記錄,判斷同一個班級,大于當(dāng)前成績的同學(xué)是不是小于2個人。
方法三:
這種方式進(jìn)過測試不通過,ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' ,不能在這幾個子查詢中使用limit。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
相關(guān)文章
mysql 5.7更改數(shù)據(jù)庫的數(shù)據(jù)存儲位置的解決方法
隨著MySQL數(shù)據(jù)庫存儲的數(shù)據(jù)逐漸變大,已經(jīng)將原來的存儲數(shù)據(jù)的空間占滿了,導(dǎo)致mysql已經(jīng)鏈接不上了。所以要給存放的數(shù)據(jù)換個地方,下面小編給大家分享mysql 5.7更改數(shù)據(jù)庫的數(shù)據(jù)存儲位置的解決方法,一起看看吧2017-04-04
mysql group by 對多個字段進(jìn)行分組操作
這篇文章主要介紹了mysql group by 對多個字段進(jìn)行分組操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
MySQL 8.0數(shù)據(jù)字典緩存管理機(jī)制解析
MySQL 8.0中的數(shù)據(jù)字典,通過對兩級緩存的逐級訪問,以及精妙的對緩存未命中情況的處理方式,有效的加速了在不同場景下數(shù)據(jù)庫對DD的訪問速度,顯著的提升了數(shù)據(jù)庫訪問元數(shù)據(jù)信息的效率,這篇文章主要介紹了解讀MySQL 8.0數(shù)據(jù)字典緩存管理機(jī)制,需要的朋友可以參考下2024-07-07

