要對分數做排名,最直接的想法就對它們做ORDER BY。但是當分數有重複時候排名是要一樣,這時候ORDER BY就發揮不了作用。
不同的廠商的資料庫有提供不同的函數可以解決這個問題,假如沒有使用函數該如何做到呢?
建立資料表:
1 | CREATE TABLE `golf` ( |
新增資料:
1 | INSERT INTO `golf`(`name`,`score`) VALUES (A,74); |
查詢:
1 | SELECT |
結果:
1 | name score rank |
想法:
先從排名這個概念下手,假如有三個人的分數(這三人分數都不一樣)大於我的分數,那麼我就是排名第四。因為分數重複的排名是一樣的,需要先對分數做一次GROUP BY,再根據上述的概念去算出排名。