我有 2 个表:legend 和 temp。 temp有ID和account ID,legend有advent_id、account_id等列。 temp 中的 ID 和图例中的 advent_id 类似。 account_id 列为空,我想将相关的 account_id 从 temp 导入图例。我正在使用 PostgreSQL。
我正在尝试以下查询,但它没有像我预期的那样工作。正在创建新行并将 account_id 添加到新行中,而不是添加到相应的 advent_id。
insert into legend(account_id)
select temp.account_id
from legend, temp
where legend.advent_id=temp.id;
是将account_id插入错误的地方,而不是对应的advent_id。
我正在使用以下查询来检查:
select advent_id, account_id from legend where account_id is not null;
我的插入查询到底出了什么问题?
最佳答案
如果您尝试修改现有行,而不是添加行,那么您需要一个UPDATE
查询,而不是一个INSERT
查询。
可以使用连接表作为 UPDATE
的目标;在你的例子中:
UPDATE legend
JOIN temp
SET legend.account_id = temp.account_id
WHERE(temp.id = legend.advent_id);
关于sql - 将一个表中的列插入到具有约束的另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923518/