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

Làm cách nào để xử lý các ràng buộc khi xếp hạng kết quả trong MySQL?

CHỈNH SỬA :Đây là MySQL 4.1+ được hỗ trợ

Sử dụng:

   SELECT st.name,
          sc.grades,
          CASE 
            WHEN @grade = COALESCE(sc.grades, 0) THEN @rownum 
            ELSE @rownum := @rownum + 1 
          END AS rank,
          @grade := COALESCE(sc.grades, 0)
     FROM STUDENTS st
LEFT JOIN SCORES sc ON sc.student_id = st.id
     JOIN (SELECT @rownum := 0, @grade := NULL) r
 ORDER BY sc.grades DESC

Bạn có thể sử dụng một phép nối chéo (trong MySQL, một INNER JOIN không có bất kỳ tiêu chí nào) để khai báo và sử dụng một biến mà không cần sử dụng SET riêng biệt tuyên bố.

Bạn cần COALESCE để xử lý đúng các NULL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:latin1-> utf8. Chuyển đổi các ký tự thành các ký tự tương đương nhiềubyte của chúng

  2. ngăn chặn việc chèn hàng trùng lặp trong php / mysql

  3. Lỗi mysql2 của Ruby

  4. Đặt lại vị trí con trỏ trong PDO

  5. Tối ưu hóa tìm kiếm MySQL bằng cách sử dụng ký tự đại diện và thích