繁体   English   中英

SQL-使用临时表更新主表

[英]SQL - update main table using temp table

我有一个关于SQL的问题,尤其是SQLite3。 我有两个表,我们将它们命名为main_tabletemp_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种方法:

  1. 里面更新当前行main_table从数据temp_table 该关系将基于ID。

  2. temp_table添加一列,以标记所有必须传输到main_table行,或者添加附加表以存储必须传输的IDs 然后删除必须从表main_table转移的所有行,并使用带有标记的列或新表从temp_table插入相应的行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM