2011-04-28 35 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