id | score | position
=====================
1 | 20 | 2
2 | 10 | 3
3 | 30 | 1
我可以使用哪些查詢優化設置使用(不可爲空),得分列位置的列?
(我敢肯定,我以前見過,但我似乎無法得到正確的關鍵字找到它!)
id | score | position
=====================
1 | 20 | 2
2 | 10 | 3
3 | 30 | 1
我可以使用哪些查詢優化設置使用(不可爲空),得分列位置的列?
(我敢肯定,我以前見過,但我似乎無法得到正確的關鍵字找到它!)
set @rank = 0;
update tbl a join (select score, @rank:[email protected]+1 as rank from tbl group by score
order by score desc) b on a.score = b.score set a.position = b.rank;
更新一舉的位置,會做的招。平分得到相等的位置
SELECT * FROM your_table ORDER BY score;
您的位置列似乎是多餘的,儘管很難從信息告訴在問題中給出。您看起來想要的功能是使用數據庫行排序來完成的,在上面的例子中用'ORDER BY'表達式來看。即使您想要某個位置列出於某種原因,請記住最有可能存在索引的列,無論如何,這在大多數情況下都會執行與位置列完全相同的操作。要麼,要麼我完全誤解你的問題。
啊,謝謝,看起來像它和'排名'是我應該早些時候使用的關鍵字! – Pool