如何从一个 SQLite 表的全部内容更新另一个 SQLite 表的子集?

发布于 2024-11-03 22:01:40 字数 412 浏览 0 评论 0原文

我有一个 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 命令来一次性完成此操作?如果有帮助,您可以调用两个表中的字段 uidwxyz,其中 uid 是唯一的主键。

I have an SQLite table that must remain unchanged until a specific point. Any pending changes to records are stored in a second table, with identical fields. What I want to do, in pseudocode, is:

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

Is there some way to phrase an UPDATE command to do this in one fell swoop? If it helps, you can call the fields in both tables uid, w, x, y and z, with uid being the unique primary key.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

作死小能手 2024-11-10 22:01:40
INSERT OR REPLACE into firstTable (uid, w, x, y, z) 
  SELECT uid, w, x, y, z FROM secondTable

如果 uid 是您所说的主键,则将起作用。

REPLACE 冲突解决方法记录在此处

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

will work if uid is the primary key as you say.

The REPLACE conflict resolution is documented here

悟红尘 2024-11-10 22:01:40

这:

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

......应该有效。

This:

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

...should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文