从sqlite中的另一个表复制时,表记录被替换

时间:2019-03-06 10:24:00

标签: java sqlite

我有两个sqlite表

tab1(项目(文本),ID(整数主键))

tab2(项目(文本),Id(整数主键))

tab1已经有一些记录。我想从tab2复制不在tab1中的所有记录。

当我使用以下查询时:

“插入tab1中选择*,从tab2中选择*,不在其中的项目(从tab1中选择项目)”。

它将tab1中的所有项目替换为tab2中的相同PK。

我希望使用新的PK将tab2中的新项目添加到tab1中

谢谢

1 个答案:

答案 0 :(得分:0)

You need to specify that you want only the column items inserted in tab1.
The other column id, since it is INTEGER PRIMARY KEY, it is also AUTOINCREMENT, so no special action for it is needed.

INSERT INTO tab1 (items)
SELECT items
FROM tab2 
WHERE items NOT IN (SELECT items FROM tab1) 

or with NOT EXISTS:

INSERT INTO tab1 (items)
SELECT items
FROM tab2 t2
WHERE NOT EXISTS (
  SELECT 1 FROM tab1 WHERE items = t2.items
)