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

MYSQL:Unikanie kartezjańskiego produktu powtarzania rekordów podczas samodzielnego łączenia

select a_numbered.id, a_numbered.identifier, b_numbered.id from 
(
select a.*,
       case 
          when @identifier = a.identifier then @rownum := @rownum + 1
          else @rownum := 1
       end as rn,
       @identifier := a.identifier
  from a
  join (select @rownum := 0, @identifier := null) r
order by a.identifier

) a_numbered join (
select b.*,
       case 
          when @identifier = b.identifier then @rownum := @rownum + 1
          else @rownum := 1
       end as rn,
       @identifier := b.identifier
  from b
  join (select @rownum := 0, @identifier := null) r
order by b.identifier

) b_numbered 
on a_numbered.rn=b_numbered.rn and a_numbered.identifier=b_numbered.identifier



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje RZECZYWISTA różnica wydajności między kluczami podstawowymi INT i VARCHAR?

  2. Jak utworzyć indeks DESC w MySQL?

  3. Klucz obcy MySQL, aby umożliwić NULL?

  4. Odpytywanie bazy danych MySQL

  5. Użyj relacyjnych baz danych MySQL na Ubuntu 9.04 (Jaunty)