SQLite 将 Table 内容从一个 Table 复制到另一个 Table 并更新

SQLite Copy Table Content from one Table to another Table and Update

我有两个 SQLite 文件,每个文件都有一个 table 和相同的 table 设计。一列设置为主键。我想将所有数据从 ItemsB 复制到 ItemsA。所有数据都应该更新。 ItemsB Table 是较新的。

我试过:

ATTACH DATABASE ItemsB AS ItemsB;
INSERT INTO ItemsA.PMItem (ItemID,VarID,Name1) SELECT ItemID,VarID,Name1 FROM ItemsB.PMItem;

显然,由于主键(即 VarID 列),这无法工作。

然后我用 ON CONFLICT 试了一下:

ON CONFLICT (VarID) DO UPDATE SET Name1=excluded.Name1

但这也不行。

示例Table:

CREATE TABLE PMItem (
    ItemID INTEGER,
    VarID  INTEGER PRIMARY KEY,
    Name1  TEXT
);

您需要一个带有始终 true 条件的 WHERE 子句,以克服在 SELECT 语句之后使用 ON CONFLICT 时引发的 the ambiguity :

INSERT INTO PMItem (ItemID,VarID,Name1) 
SELECT ItemID,VarID,Name1 
FROM ItemsB.PMItem
WHERE 1
ON CONFLICT(VarID) DO UPDATE 
SET Name1 = EXCLUDED.Name1;