使用约束将一个列从一个表插入另一个表

时间:2012-06-06 23:03:57

标签: sql postgresql

我有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;

我的插入查询中究竟出现了什么问题?

1 个答案:

答案 0 :(得分:8)

如果您尝试修改现有行而不是添加行,则需要UPDATE查询,而不是INSERT查询。

可以使用连接表作为UPDATE的目标;在你的例子中:

UPDATE legend
JOIN temp
SET legend.account_id = temp.account_id
WHERE(temp.id = legend.advent_id);