Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konwertuj wybory UNION do pojedynczego wyboru z pętlą w MySQL

W MySQL (przed wersją 8.0) możesz użyć do tego zmiennych:

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;

W 8.0+ użyj row_number() standardowa metoda ANSI dla tej funkcji.

Uwagi:

  • Nigdy użyj przecinków w FROM klauzula. Zawsze użyj właściwego, wyraźnego JOIN składnia.
  • Użyj aliasów tabeli, które są skrótami dla używanych kolumn.
  • Kwalifikuj wszystkie nazwy kolumn w zapytaniach, których używasz, zwłaszcza gdy FROM klauzula odwołuje się do więcej niż jednej tabeli.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uruchomić zapytanie mysql, gdy użytkownik wybierze nową opcję w polu wyboru?

  2. Dynamiczny SQL zwraca „błąd składni” w Google Apps Script przy użyciu JDBC i MySQL

  3. Jak mogę generować dynamiczne wykresy z danymi MySQL?

  4. Łączniki i licencjonowanie MySQL

  5. PHP 7 RC3:Jak zainstalować brakujące PDO MySQL