我在基于Linux的操作系统上使用sqlite,我有2个数据库文件: 我想用databaseB中的条目更新databaseA中的条目,但我不想在databaseA中添加新条目。
例如这很好但它会添加我不想要的新条目。
attach "databaseB" as db2; insert or replace into main.MyTable select * from db2.MyTable;
所以我想设置一些像" name"和"姓氏"如果它在两个数据库中都相同,则更新此原始的所有其他字段,如果在databaseA中没有这样的名称+系列名称则不执行任何操作。
首选方法是什么?
答案 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);