我有兩個 SQLite 檔案,每個檔案都有一個表和相同的表設計。一列設定為主鍵。我想將所有資料復制ItemsB到ItemsA. 所有資料都應該更新。ItemsB 表是較新的表。
我試過了:
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
但這也行不通。
示例表:
CREATE TABLE PMItem (
ItemID INTEGER,
VarID INTEGER PRIMARY KEY,
Name1 TEXT
);
uj5u.com熱心網友回復:
您需要一個WHERE帶有 alwaystrue條件的子句,以克服在陳述句后使用時引發的歧義:ON CONFLICTSELECT
INSERT INTO PMItem (ItemID,VarID,Name1)
SELECT ItemID,VarID,Name1
FROM ItemsB.PMItem
WHERE 1
ON CONFLICT(VarID) DO UPDATE
SET Name1 = EXCLUDED.Name1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466150.html
