[英]SQL - update main table using temp table
我有一个关于SQL的问题,尤其是SQLite3。 我有两个表,我们将它们命名为main_table
和temp_table
。 这些表基于相同的关系模式,因此它们具有相同的列,但具有不同的行(值)。
现在我要做的是:
对于main_table
每一行,如果temp_table
中有temp_table
具有相同ID,我想替换它。 否则,我想将旧行保留在表中。
我当时正在考虑使用一些joins
但它没有提供我想要的东西。
你能给我个建议吗?
编辑:附加信息:
我想避免写所有列,因为这些表包含数十个属性,并且由于我必须更新所有列,因此不必写出所有列。
如果表具有相同的结构,则可以简单地使用SELECT *
:
BEGIN;
DELETE FROM main_table
WHERE id IN (SELECT id
FROM temp_table);
INSERT INTO main_table
SELECT * FROM temp_table;
COMMIT;
(这也将增加任何新的行temp_table
以前不存在中main_table
。)
您有2种方法:
里面更新当前行main_table
从数据temp_table
。 该关系将基于ID。
在temp_table
添加一列,以标记所有必须传输到main_table
行,或者添加附加表以存储必须传输的IDs
。 然后删除必须从表main_table
转移的所有行,并使用带有标记的列或新表从temp_table
插入相应的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.