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

Ubah pilihan UNION menjadi pilihan tunggal dengan loop di MySQL

Di MySQL (sebelum 8.0), Anda dapat menggunakan variabel untuk ini:

select genre_name, actor_id, cnt
from (select genre_name, actor_id, cnt,
             (@rn := if(@g = genre_name, @rn + 1,
                        if(@g := genre_name, 1, 1)
                       )
             ) as rn
      from (select g.genre_name, r.actor_id, count(*) as cnt
            from movie m join
                 role r
                 on r.movie_id = m.movie_id join
                 movie_has_genre mhg
                 on mhg.movie_id = m.movie_id join
                 genre g
                 on g.genre_id = mhg.genre_id
            group by g.genre_name, r.actor_id
            order by g.genre_name, cnt desc
           ) ga cross join
           (select @g := '', @rn := 0) params
      ) ga
where rn <= 3;

Di 8.0+, gunakan row_number() metode standar ANSI untuk fungsi ini.

Catatan:

  • Tidak pernah gunakan koma di FROM ayat. Selalu gunakan JOIN yang tepat dan eksplisit sintaks.
  • Gunakan alias tabel yang merupakan singkatan dari kolom yang Anda gunakan.
  • Kualifikasikan semua nama kolom dalam kueri yang Anda gunakan, terutama bila FROM klausa merujuk lebih dari satu tabel.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Plugin '0' tidak dimuat

  2. Bagaimana cara terhubung ke database MySQL dari iPhone?

  3. Driver Qt QMYSQL tidak dimuat di Windows

  4. Bagaimana cara meletakkan teks di depan bidang kenaikan otomatis di mysql (seperti:TTT00001)?

  5. PHP mengubah format tanggal