0

重複することなく、2 つのユーザー テーブルを 1 つにマージする必要があります。

例:私のデータベースにはテーブルen_userとkn_userがあり、両方に存在するユーザーはほとんどいないため、クエリを実行してkn_userとen_userをマージすると、kn_userに存在する一意のユーザーをen_userにコピーする必要がありますが、両方に存在するユーザーはコピーしないでください合併する。

私のテーブルをよりよく理解するために

en_users テーブル

**id    name** 
1     Rakesh
2     Deepu
3     sudha
4     sandeep
5     Anil

kn_user テーブル

**id    name** 
1     Ashwini
2     Rakesh
3     sudha
4     sunil
5     Anil     

したがって、kn_users と en_users をマージする場合、この出力が必要です

en_users テーブル

**id    name** 
1     Rakesh
2     Deepu
3     sudha
4     sandeep
5     Anil
6     Ashwini
7     Sunil
4

2 に答える 2

0

これがあなたが望むことをするクエリです:

select (@rn := @rn + 1) as id, name
from ((select id, name, 1 as priority
       from en_users
      ) union all
      (select id, name, 2
       from kn_users k
       where not exists (select 1 from en_users e where e.name = k.name)
      )
     ) ek cross join
     (select @rn := 0) params
order by priority, id;

サブクエリのロジックは、1 つのテーブルからすべてを取得し、次に 2 番目のテーブルから一致しない行のみを取得することです。例は に基づいていnameます。

idクエリは、質問の例に基づいて最終的なものを慎重に割り当てます。最初に「en」テーブルから ID を割り当て、次に「kn」テーブルから ID を割り当て、2 つのテーブルの ID 順に割り当てます。

于 2016-05-10T10:37:02.893 に答える