Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách xếp hạng một bản ghi có cùng trọng số trong MySQL

Sử dụng trò chơi của Giorgos ...

SELECT name
     , marks
     , FIND_IN_SET(marks, (SELECT GROUP_CONCAT(marks ORDER BY marks DESC) FROM mytable)) rank
  FROM mytable;

|     Name | Marks | rank |
|----------|-------|------|
| StudentA |    90 |    1 |
| StudentB |    85 |    2 |
| StudentC |    85 |    2 |
| StudentD |    70 |    4 |

http://sqlfiddle.com/#!9/7cc30/6

hoặc

SELECT name, marks, rank
FROM (SELECT name
     , marks
     , @prev := @curr
     , @curr := marks
     , @i:[email protected]+1 temp
     , @rank := IF(@prev = @curr, @rank, @i) AS rank
  FROM mytable
     , ( SELECT @curr := null, @prev := null, @rank := 0, @i:=0) vars
 ORDER 
    BY marks DESC,name
      ) x
      ORDER 
    BY marks DESC,name

http://sqlfiddle.com/#!9/287e07/9



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một trang mới cho câu lệnh php ORDER BY khác?

  2. Sao lưu (các) cơ sở dữ liệu bằng cách sử dụng truy vấn mà không sử dụng mysqldump

  3. Lỗi MySQL 2013

  4. MySQL:chỉ cập nhật một trường nếu điều kiện được đáp ứng

  5. Trình tạo số Alpha độc đáo