※ 引述《jami520 (我的生命因你而發光)》之銘言:
: 目前有個資料表是儲存學生每天的成績單 db1
: (資料表欄位 name, score, gdate)
: 我想取出每天前三名的學生姓名以及利用每天分數作排序,不曉得該怎樣撰寫mysql呢
: EX:
: gdate score name
: 8/11 96 小明
: 8/11 85 小王
: 8/11 73 小陳
: 8/10 88 小黃
: 8/10 86 小明
: 8/10 81 小忠
: 8/9 93 小王
: 8/9 91 小明
: 8/9 88 小黃
: .......
select rank,gdate,score,name from (
SELECT
@rank:=if(@prev!=gdate,1,@rank:=@rank+1) as rank,
@prev:=if(@prev!=gdate,gdate,@prev) as prev,
gdate, score, name
FROM
getmon3 as a,
(
select
@prev:='',
@rank:=0
) as b
ORDER BY gdate desc, score DESC
) as a
where rank <= 3
得到結果如下:
rank gdate score name
1 2014-08-11 100 小山
2 2014-08-11 99 小綠
3 2014-08-11 96 小陳
1 2014-08-10 99 小山
2 2014-08-10 77 小金
3 2014-08-10 60 小詹
1 2014-08-09 101 查克羅禮士
2 2014-08-09 16 統神
1 2014-08-08 87 小八
2 2014-08-08 73 小三
3 2014-08-08 66 小六
1 2014-08-07 69 阿金
不知道是不是你要的~
以下是原內容...
gdate 日期 score 分數 name 姓名
2014-08-11 96 小陳
2014-08-11 99 小綠
2014-08-11 85 阿九
2014-08-11 96 小明
2014-08-11 85 小王
2014-08-11 73 小陳
2014-08-11 69 小張
2014-08-11 100 小山
2014-08-10 99 小山
2014-08-10 60 小詹
2014-08-10 77 小金
2014-08-09 16 統神
2014-08-09 101 查克羅禮士
2014-08-08 73 小三
2014-08-08 66 小六
2014-08-08 87 小八
2014-08-07 69 阿金