我有2个表:图例和 temp 。 temp有ID和帐户ID,图例有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;
我的插入查询中究竟出现了什么问题?
答案 0 :(得分:8)
如果您尝试修改现有行而不是添加行,则需要UPDATE
查询,而不是INSERT
查询。
可以使用连接表作为UPDATE
的目标;在你的例子中:
UPDATE legend
JOIN temp
SET legend.account_id = temp.account_id
WHERE(temp.id = legend.advent_id);