SQLite - 合并来自2个数据库的表,但不添加新条目

时间:2017-12-11 08:49:27

标签: sql sqlite

我在基于Linux的操作系统上使用sqlite,我有2个数据库文件: 我想用databaseB中的条目更新databaseA中的条目,但我不想在databaseA中添加新条目。

例如这很好但它会添加我不想要的新条目。

attach "databaseB" as db2; insert or replace into main.MyTable select * from db2.MyTable;

所以我想设置一些像" name"和"姓氏"如果它在两个数据库中都相同,则更新此原始的所有其他字段,如果在databaseA中没有这样的名称+系列名称则不执行任何操作。

首选方法是什么?

1 个答案:

答案 0 :(得分:0)

只需使用子查询将替换限制为在其他表中找到键的那些行:

INSERT OR REPLACE INTO main.MyTable
SELECT *
FROM db2.MyTable
WHERE (Name, FamilyName) IN (SELECT Name, FamilyName
                             FROM main.MyTable);

或加入:

INSERT OR REPLACE INTO main.MyTable
SELECT db2.MyTable.*
FROM db2.MyTable
JOIN main.MyTable USING (Name, FamilyName);