Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Saya Menangani Ikatan Saat Memberi Peringkat Hasil di MySQL?

EDIT :Ini didukung MySQL 4.1+

Gunakan:

   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

Anda dapat menggunakan gabungan silang (di MySQL, INNER JOIN tanpa kriteria apa pun) untuk mendeklarasikan dan menggunakan variabel tanpa menggunakan SET terpisah pernyataan.

Anda memerlukan COALESCE untuk menangani NULL dengan benar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kirim koordinat gps saat ini ke database mySQL menggunakan google maps api

  2. Bagaimana saya bisa mendapatkan ID induk baris dalam tabel MySQL ini secara rekursif?

  3. Atur zona waktu di PHP dan MySQL

  4. Kapan saya harus menggunakan UNSIGNED dan SIGNED INT di MySQL?

  5. Cara Mengubah Kumpulan Karakter dari latin1 ke UTF8 di MySQL