我們?cè)趯W(xué)習(xí)MYSQL時(shí)庄蹋,最讓我們頭疼的一個(gè)問(wèn)題是:如何實(shí)現(xiàn)分組排序。我們都知道MYSQL沒(méi)有一個(gè)專(zhuān)門(mén)的函數(shù)钝吮。讓我們一起來(lái)探索,如何實(shí)現(xiàn)分組排序呢板辽?
一:創(chuàng)建表格
use data;
create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));
insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);
二:代碼編寫(xiě)
set @rank:=0;
set @CI:=null;
select SId,CId,score,rank from(
select
SId, CId,score,
@rank:=if(@CI=CId,@rank+1,1) as rank,
@CI:=CId
from data.sc
order by CId,score desc) as t1
輸出結(jié)果:
注意:
第一:設(shè)置變量并賦值時(shí)奇瘦,符號(hào)是:=
第二:一定要進(jìn)行排序order by ,否則會(huì)出現(xiàn)這樣的情況: