亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql中實現排名,求解,看不懂

mysql中實現排名,求解,看不懂

慕粉3231078 2016-08-03 21:39:10
select?sc.*,?( ??select?count(1)?from?Score?where?cid?=?sc.cid?and?score?>?sc.score)?+?1?as?px? from?Score?as?sc?order?by?sc.cid,?px; 求解,這段代碼中是怎么實現的排序功能,子查詢看不懂,能否詳細解析下,謝謝啊
查看完整描述

1 回答

已采納
?
qq_章魚高_03773279

TA貢獻1條經驗 獲得超1個贊

select?sc.*,?(
--?子查詢的意思是在score表中找出與當前記錄cid相同,但score大于當前記錄的score(sc.score)的數目+1。
--?那樣的話:如果是0,?則證明該條記錄是表示的是該班的第一名,如果是1,在表示該班的第二名,以此類推。
??select?count(*)?from?Score??as?a?where?a.cid?=?sc.cid?and?a.score?>?sc.score
--?所以后面加了個1
)?+1??as?px
from?Score?as?sc?order?by?sc.cid,?px;

做了個測試:

SET?FOREIGN_KEY_CHECKS=0;

--?----------------------------
--?Table?structure?for?score
--?----------------------------
DROP?TABLE?IF?EXISTS?`score`;
CREATE?TABLE?`score`?(
??`id`?int(11)?NOT?NULL?AUTO_INCREMENT,
??`cid`?int(11)?DEFAULT?NULL,
??`score`?int(11)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?AUTO_INCREMENT=8?DEFAULT?CHARSET=utf8;

--?----------------------------
--?Records?of?score
--?----------------------------
INSERT?INTO?`score`?VALUES?('1',?'1',?'80');
INSERT?INTO?`score`?VALUES?('2',?'1',?'70');
INSERT?INTO?`score`?VALUES?('3',?'1',?'90');
INSERT?INTO?`score`?VALUES?('4',?'2',?'80');
INSERT?INTO?`score`?VALUES?('5',?'3',?'70');
INSERT?INTO?`score`?VALUES?('6',?'3',?'60');
INSERT?INTO?`score`?VALUES?('7',?'2',?'50');

運行上面的sql查詢,結果是:

mysql>?select?sc.*,?(
????->???select?count(*)?from?Score?where?cid?=?sc.cid?and?score?>?sc.score
????->?)?+?1?as?px
????->?from?Score?as?sc?order?by?sc.cid,?px;
+----+------+-------+------+
|?id?|?cid??|?score?|?px???|
+----+------+-------+------+
|??3?|????1?|????90?|????1?|
|??1?|????1?|????80?|????2?|
|??2?|????1?|????70?|????3?|
|??4?|????2?|????80?|????1?|
|??7?|????2?|????50?|????2?|
|??5?|????3?|????70?|????1?|
|??6?|????3?|????60?|????2?|
+----+------+-------+------+
7?rows?in?set?(0.00?sec)


查看完整回答
1 反對 回復 2016-08-04
  • 1 回答
  • 0 關注
  • 1293 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號