首页 > 解决方案 > 如何在 PostgreSQL 中迭代使用 INSERT INTO

问题描述

我有 Table1 与我想要迭代的行,并将这些数据行中的值插入到另一个表中。

Table1Name     ->      ID      Name  Date        Type
--------               -------------------------------
a                      101     a     2021-07-01  original
b                      139     b     2021-07-04  original
c                      322     c     2021-07-08  original
d                      431     d     2021-07-09  original

所以基本上伪是:

Loop over Table1:
    INSERT INTO Table2 (id, name, date) VALUES (random(), Table1.name, NOW(), 'original')

只需遍历 Table1,每次都添加其中一个值。

标签: sqlpostgresql

解决方案


我想你只想要一个INSERT INTO ... SELECT

INSERT INTO Table2 (id, name, date)
SELECT RANDOM(), name, NOW()
FROM Table1;

大多数 SQL 操作本质上都是基于集合的,这意味着如果要将一个表中的所有记录插入到另一个表中,则该操作将被视为一件事情。


推荐阅读