gpt4 book ai didi

SQLite 内连接 - 使用另一个表中的值更新

转载 作者:IT王子 更新时间:2023-10-29 06:18:58 26 4
gpt4 key购买 nike

这很简单,已被多次询问,但我无法让它工作。我认为应该工作的 SQL 查询是:

    UPDATE table2
SET dst.a = dst.a + src.a,
dst.b = dst.b + src.b,
dst.c = dst.c + src.c,
dst.d = dst.d + src.d,
dst.e = dst.e + src.e
FROM table2 AS dst
INNER JOIN table1 AS src
ON dst.f = src.f

最佳答案

使用更新语句是不可能的,因为在 sqlite 中不支持更新语句中的连接。请参阅文档: update statement

如果只想将单个列更新为静态值,则可以在更新语句中正确使用子查询。请参阅此示例:How do I make an UPDATE while joining tables on SQLite?

现在在您的示例中,假设“f 列”上有一个唯一键 - 我想出的解决方法/解决方案是使用 replace 语句:

replace into table2
(a, b, c, d, e, f, g)
select src.a, src.b, src.c, src.d, src.e, dest.f, dest.g
from table1 src
inner join table2 dest on src.f = dest.f

我还在 table2“column g”中添加了一个额外的列,以显示您如何使用此方法仅“更新”某些列。

另一件需要注意的事情是,如果您使用“PRAGMA foreign_keys = ON;”由于该行被有效地删除和插入,因此可能会出现问题。

关于SQLite 内连接 - 使用另一个表中的值更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11790595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com