我有一個MySQL表是這樣的:MySQL查詢一列進行排序,併產生其排名(相當於排名OVER PARTITION甲骨文)
id | points | rank | league_id
______________________________
1 | 84 | 0 | 1
2 | 55 | 0 | 1
3 | 104 | 0 | 1
4 | 123 | 0 | 2
我想做到的是以下幾點:
id | points | rank | league_id
______________________________
1 | 84 | 2 | 1
2 | 55 | 3 | 1
3 | 104 | 1 | 1
4 | 123 | 1 | 2
所以 - 使用rank列來存儲基於points_id分組數的點數。這可能看起來有點多餘,但我需要它來達到我的目的(這是一個幻想體育網站,擁有一個排名欄大大簡化了很多PHP代碼,並減少了整個腳本中所需查詢的數量)。
我知道顯而易見的解決方案 - 遍歷行,通過league_id分組並逐個更新排名。我想知道的是,是否有更高效的解決方案?
我希望你不介意,我改變了你的問題的標題,我覺得它回答了一個很常見從oracle切換到mysql時出現問題,值得指出。如果你不喜歡它可以隨意編輯它 – Sebas 2013-03-10 17:52:50
沒問題,很樂意幫助別人。 – jovan 2013-03-10 19:33:51