sql >> データベース >  >> RDS >> Mysql

MYSQL:自己結合時にレコードを繰り返すデカルト積を回避する

    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. 結合されたテーブルにLIMIT1を指定したMySQLJOIN

    2. SQLiteで月末を返す

    3. Javaマルチスレッドを使用してmysqlデータを取得する方法

    4. 予期しない結果を与えるワイルドカートを含むMysqlのような