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

Nhận thứ hạng, dựa trên điểm số, từ Cơ sở dữ liệu MySql không có thứ tự khi được cấp Tên người dùng

Điều này sẽ xử lý các thứ hạng có cùng số điểm.

SELECT  d.*, c.ranks
FROM
        (
          SELECT    Score, @rank:[email protected]+1 Ranks
          FROM
                  (
                      SELECT  DISTINCT Score 
                      FROM    tableName a
                      ORDER   BY score DESC
                  ) t, (SELECT @rank:= 0) r
        ) c 
        INNER JOIN tableName d
            ON c.score = d.score
// WHERE   d.username = 'Helen'

ví dụ

KEY     username    password    score   Ranks
1       Anna        123         5       3
2       Bobby       345         6       2
3       Helen       678         6       2
4       Jon         567         2       4
5       Arthur      ddd         8       1

để có hiệu suất tốt hơn, hãy thêm INDEX trên cột Score ,

ALTER TABLE tableName ADD INDEX (Score)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng nối bên trong liên quan đến giá trị lớn nhất

  2. Sử dụng char làm khóa chính / khóa ngoại có phải là không?

  3. Lỗi nghiêm trọng:Không tìm thấy lớp 'TableRows' trong

  4. Truy vấn MySQL - các mục nhập gần đây cho mỗi nhóm

  5. Kiến trúc sư doanh nghiệp - Nhà cung cấp Microsoft OLE DB cho Trình điều khiển ODBC -2147217900 / '80040E14'