sql - 将一个表中的列插入到具有约束的另一个表中

标签 sql postgresql

我有 2 个表:legendtemp。 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/

相关文章:

SQL Server : bitwise or separate fields

mysql - 在单个查询中更新 2 个表中的随机记录

sql - 相同外键的两列的 INNER JOIN

sql - SQL 中的 CHAR 数据类型是否已过时?你什么时候使用它?

postgresql - CakePHP 在 WHERE 子句中的函数名称周围添加引号

python - django postgresql 操作错误 : index row size xxx exceeds maximum yyy

database - PostgreSQL 如何查看运行了哪些查询

mysql查询和正则表达式问题

sql - if 条件中的 Postgres 语法错误

postgresql - Postgres : Function check duplicates in table