1

あるテーブルから、最初のテーブルに存在しない別のテーブルにデータをコピーするにはどうすればよいでしょうか。表の列の 1 つは主キーです。

INSERT INTO table SELECT * FROM db2.table; 
ERROR 1062 (23000): Duplicate entry '100001' for key 'id_UNIQUE'
4

3 に答える 3

3

これを試して:

INSERT INTO table
SELECT T1.*
FROM db2.table T1
    LEFT JOIN table T2
       ON T1.Id = T2.Id
WHERE T2.Id IS NULL; 
于 2013-02-06T12:57:48.603 に答える
3

次のように、述語NOT INを使用してこれを行うことができます。

INSERT INTO table1 
SELECT * 
FROM db2.table2 
WHERE table1ReferenceID NOT IN(SELECT id_UNIQUE FROM table1);

これはtable1ReferenceID、これが最初のテーブルにあるかどうかをチェックします。したがって、SELECT句は、最初のテーブル table1 に既に表示されているものを除いて、2 番目のテーブルからすべての行を選択します。

注意:列は2 番目の表table1ReferenceIDの参照です。id_UNIQUE

これに対する他の代替手段はLEFT JOIN@ HamletHakobyanの回答NOT EXISTS.

于 2013-02-06T12:58:57.787 に答える
0
WHERE [primary_key_table1] not IN (SELECT [primary_key_table2] FROM [table2])

だから私は次のようなものを提案します

INSERT INTO table (SELECT * FROM db2.table WHERE id NOT IN (SELECT id FROM table));
于 2013-02-06T12:57:48.480 に答える