2011-04-28 65 views
1

我有一個SQLite表,必須保持不變,直到一個特定的點。對記錄的任何待處理更改都存儲在第二個表中,並具有相同的字段。我想要做什麼,在僞代碼是:如何從另一個SQLite表的全部內容更新一個SQLite表的子集?

for each record U in secondTable 
    find record R in firstTable, where R.uid = U.uid 
    replace all fields in record R with those in record U 

是否有某種方式來短語的UPDATE命令這樣做一舉?如果有幫助,您可以撥打uid,w,x,yz這兩個表中的字段,uid是唯一的主鍵。

回答

2
INSERT OR REPLACE into firstTable (uid, w, x, y, z) 
    SELECT uid, w, x, y, z FROM secondTable 

將工作,如果uid是你說的主鍵。

REPLACE衝突解決記錄here

+0

謝謝!我今晚會測試它。雖然稍微修改了...... SELECT和FROM之間的括號給了SQLite一個合適的選擇。刪除它們可以讓語句編譯,並且大概可以工作。 – 2011-04-29 01:20:51

+0

謝謝,我編輯了後代的代碼。 – 2011-04-29 02:36:25

+0

FWIW,它看起來像代碼完美的作品。 :-D – 2011-04-29 21:29:42

1

此:

UPDATE R 
    SET R.w = U.w, 
     R.x = U.x, 
     R.y = U.y, 
     R.z = U.z 
WHERE R.uid = U.uid; 

...應該工作。

+0

你忘了聲明'U' – 2011-04-28 03:13:43

相關問題