我希望将第一个表中的记录插入到第二个表中,以便只插入唯一记录。也就是说,如果表1和表2具有重叠(重复)记录,则只有唯一记录才会插入表2中的表1中。例如,我有一个名为Table_One的表,
和另一个名为Table_Two的表,
现在我想从Table_Two中添加记录,这些记录不在Table_one中,即(XYZ | UVW),以便输出为,
我尝试过使用这种技术,
INSERT INTO TableB(Col1, Col2, Col3, ... , Coln)
SELECT DISTINCT A.Col1, A.Col2, A.Col3, ... , A.Coln
FROM TableA A
LEFT JOIN TableB B
ON A.KeyOfTableA = B.KeyOfTableB
WHERE B.KeyOfTableB IS NULL
但重复的行也被插入,任何建议可能是什么解决方案???我正在使用sqlite3 db。
答案 0 :(得分:3)
只需使用UNION
。
<强>查询强>
sqlite> CREATE TABLE table1(firstName VARCHAR(50),lastName VARCHAR(50));
sqlite> INSERT INTO table1 VALUES('ABC','DEF');
sqlite> INSERT INTO table1 VALUES('GHI','JKL');
sqlite> INSERT INTO table1 VALUES('MNO','PQR');
sqlite>
sqlite> CREATE TABLE table2(first VARCHAR(50),last VARCHAR(50));
sqlite> INSERT INTO table2 VALUES('ABC','DEF');
sqlite> INSERT INTO table2 VALUES('XYZ','UVW');
sqlite> .headers ON
sqlite> SELECT * FROM table1 UNION SELECT * FROm table2;
<强>输出强>
firstName|lastName
ABC|DEF
GHI|JKL
MNO|PQR
XYZ|UVW
答案 1 :(得分:3)
INSERT INTO TableB (Col1, Col2, Col3, ... , Coln)
SELECT DISTINCT A.Col1,
A.Col2,
A.Col3,
... ,
A.Coln
FROM TableA A
WHERE A.KeyOfTableA NOT IN (SELECT B.KeyOfTableB
FROM TableB B)