【发布时间】:2015-07-31 14:29:31
【问题描述】:
我有一个关于 SQL 的问题,尤其是 SQLite3。我有两张表,我们将它们命名为 main_table 和 temp_table。这些表基于相同的关系模式,因此它们具有相同的列但不同的行(值)。
现在我想做的事:
对于main_table 的每一行,如果temp_table 中有一行具有相同的ID,我想替换它。否则我想保留表中的旧行。
我正在考虑使用一些 joins,但它没有提供我想要的东西。
你能给我一个建议吗?
编辑:附加信息:
我想避免写入所有列,因为这些表包含数十个属性,并且由于我必须更新所有列,因此没有必要写出所有列。
【问题讨论】:
-
没有关于 sqlite 的线索,但它闻起来像是
MERGE或带有子选择的UPDATE的工作。 -
为什么要进行子选择,@Thomas Tschernich?刚刚更新。
-
好吧,如果您使用表 B 中的数据更新表 A,您将需要在更新中使用子选择。或者你可以像在 MSSQL 中那样做一个花哨的更新连接,以防它在 sqlite 中被允许。
-
update m set m.col1 = t.col1 ... from main_table m inner join temp_table t on m.id = t.id更新除id、@Thomas Tschernich 之外的所有列。
标签: python sql sqlite sql-update