SQL - 使用临时 table 更新主要 table

SQL - update main table using temp table

我有一个关于 SQL 的问题,尤其是 SQLite3。我有两个 table,我们将它们命名为 main_tabletemp_table。这些 table 基于相同的关系模式,因此它们具有相同的列但不同的行(值)。

现在我想做的是:

对于 main_table 的每一行,如果 temp_table 中有一行具有相同的 ID,我想替换它。否则我想保留 table.

中的旧行

我正在考虑使用一些 joins,但它没有提供我想要的东西。

你能给我一个建议吗?

编辑:附加信息:

我想避免写出所有列,因为那些 table 包含数十个属性,并且由于我必须更新所有列,因此没有必要写出所有列。

你有两种方法:

  1. temp_table 中的数据更新 main_table 中的当前行。关系将基于 ID。

  2. temp_table 添加一列以标记必须转移到 main_table 的所有行或添加额外的 table 以存储 IDs必须转移。然后删除所有必须从 table main_table 传输的行,并使用带标记的列或新的 table.

    [=26 从 temp_table 插入相应的行=]

如果表格具有相同的结构,您可以简单地使用 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 中不存在的任何新行。)