在sqlite3中向表中插入不同的记录

时间:2014-12-15 08:23:55

标签: sqlite

我希望将第一个表中的记录插入到第二个表中,以便只插入唯一记录。也就是说,如果表1和表2具有重叠(重复)记录,则只有唯一记录才会插入表2中的表1中。例如,我有一个名为Table_One的表,

enter image description here

和另一个名为Table_Two的表,

enter image description here

现在我想从Table_Two中添加记录,这些记录不在Table_one中,即(XYZ | UVW),以便输出为,

enter image description here

我尝试过使用这种技术,

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。

2 个答案:

答案 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)