CREATE?PROCEDURE?GetScRank()

我們提供的服務有:成都網(wǎng)站設計、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、棲霞ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的棲霞網(wǎng)站制作公司
BEGIN
DECLARE?SigDone?INT?DEFAULT?0;
DECLARE?Cno_?BIGINT;
DECLARE?Cur1?CURSOR?FOR?SELECT?DISTINCT?Cno?FROM?Score;
DECLARE?CONTINUE?HANDLER?FOR?SQLSTATE?'02000'?SET?SigDone?=?1;
OPEN?Cur1;
TRUNCATE?scResult;
FETCH?Cur1?INTO?Cno_;
WHILE?NOT?SigDone?DO
INSERT?INTO?scResult?(Sno,Cno,Sc)?(SELECT?DISTINCT?Sno,Cno,Sc?FROM?Score?WHERE?Cno?=Cno_?ORDER?BY?Sc?DESC?LIMIT?10);
COMMIT;
FETCH?Cur1?INTO?Cno_;
END?WHILE;
CLOSE?Cur1;
END
用游標效率應該還行吧.
前幾天工作上遇到一個問題,在mysql數(shù)據(jù)查詢的時候,使用的是in條件,而結果需要根據(jù)in來進行排序,當時嘗試了幾次都沒成功,后來在度娘的幫助下,找到了解決辦法:
select * from table_name where id in (6,2,1,10,5,7..)
查詢的結果和in中的順序并不一致,也就是說在批量查詢時,mysql的查詢并不是按照in中的值得順序來查詢的。那怎么才能保證和in查詢中的順序相同呢?
查詢了資料發(fā)現(xiàn)有兩種方式可以對in查詢的結果進行排序。一種是order by find_in_set,另外一種是order by substring_index
1、select * from table_name where id in (6,2,1,10,5,7..) order by find_in_set(id,'6,2,1,10,5,7');
2、select * from table_name where id in (6,2,1,10,5,7..)?order by substring_index('6,2,1,10,5,7',id,1);
因為mysql里沒有top方法,使用top會報語法的錯誤,
mysql提供了limit方法,可以達到同樣的效果。
select?*?from?table?order?by?id?desc?limit?10;
select?*?from?(select?*?from?TABLE?limit?10)?aa?
order?by?name;
其實,一般來說,最好還是先排序,再進行行數(shù)限制。
由于mysql沒有row_number()方法,只能通過其它方法來進行排序,以下為使用變量來實現(xiàn)排序
示例1:以col1分組,col2正序排序
示例2:以col1分組,col2倒序排序
在執(zhí)行查詢結果時,默認情況下查詢結果無序排列。但我們有時需要對數(shù)據(jù)按一定規(guī)則進行排序。這時可以通過ORDER BY子句來實現(xiàn)這個功能。語法如下:
SELECT?*,column [alias],...?FROM?table
[WHERE?condition(s)]
[ORDER BY column[ASC|DESC]];
默認是ASC指定的升序排列,DESC用來指定降序排列。
1、升序排序:
使用ORDER BY子句時,默認情況下數(shù)據(jù)是按升序排列的,故可以用ASC關鍵字指點升序排列,或者不指定,默認就是升序,顯示效果是一樣的,如下圖:
2、降序排序:
當需要查詢結果降序排列時,必須在排序后指定DESC關鍵字。如下圖是查看職員薪水的降序排列:
網(wǎng)站題目:mysql怎么排序前十,mysql查詢前10條記錄并排序
瀏覽路徑:http://chinadenli.net/article6/dsihgog.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、App設計、小程序開發(fā)、云服務器、做網(wǎng)站、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)