MySQL是一款常用的關系型數據庫管理系統。在MySQL中,常常需要根據某些條件進行排序,并取得排序后的名次。
假設有如下一張名單表:
CREATE TABLE students ( id INT, name VARCHAR(50), score INT ); INSERT INTO students VALUES(1, '張三', 90); INSERT INTO students VALUES(2, '李四', 80); INSERT INTO students VALUES(3, '王五', 95); INSERT INTO students VALUES(4, '趙六', 85); INSERT INTO students VALUES(5, '錢七', 92);
現在需要根據分數(score)降序排序,取得名次(rank)并顯示。
SELECT s.id, s.name, s.score, (SELECT COUNT(*) FROM students WHERE score >s.score) + 1 AS rank FROM students s ORDER BY s.score DESC;
這條SQL語句的含義是:先從學生表中選擇出每一個學生的id、name、score信息,然后通過子查詢計算出比當前學生分數高的人數,并加1作為名次(rank)顯示出來。最后根據分數(score)降序排序。
執行以上SQL語句后輸出的結果如下:
+----+--------+-------+------+ | id | name | score | rank | +----+--------+-------+------+ | 3 | 王五 | 95 | 1 | | 5 | 錢七 | 92 | 2 | | 1 | 張三 | 90 | 3 | | 4 | 趙六 | 85 | 4 | | 2 | 李四 | 80 | 5 | +----+--------+-------+------+
可以看到,根據分數(score)降序排序后,學生的名次(rank)也被正確地計算并顯示了出來。
上一篇mysql 取并集