postgreSQL - 更新同一个表中的列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgreSQL - 更新同一个表中的列相关的知识,希望对你有一定的参考价值。

我有一张桌子

adr_id | adr_over | adr_debitor |
1      | NULL     | 235567      |
2      | NULL     | 235587      |
~
45678  | 1        | NULL
45679  | 2        | 0
~

现在我想更新列adr_debitor

adr_id | adr_over | adr_debitor
1      | NULL     | 235567
2      | NULL     | 235587
~
45678  | 1        | 235567
45679  | 2        | 235587
~

我尝试过:

UPDATE adresse
  SET adr1.adr_debitor = adr2.adr_debitor
FROM adresse adr1
  INNER JOIN  adresse adr2 
           ON adr1.adr_over = adr2.adr_id
          AND adr1.adr_over IS NOT NULL

但是存在语法错误。

答案

当我在我的身上做到这一点时,就是这样的

UPDATE adresse adr1
SET adr_debitor = adr2.adr_debitor
FROM adresse adr2
WHERE adr1.adr_over = adr2.adr_id

为我做SET adr1.adr_debitor = adr2.adr_debitorgave错误,我没有必要在SET之后添加adr1.adr_debitor

另一答案

您不能在更新语句中使用inner join。而且您还需要列出连接表,而不是from子句中的目标表:

UPDATE adresse adr1
  SET adr1.adr_debitor = adr2.adr_debitor
FROM adresse adr2
WHERE adr1.adr_over = adr2.adr_id

条件AND adr1.adr_over IS NOT NULL不是必需的,因为条件adr1.adr_over = adr2.adr_id只有在adr1.adr_over不为空时才会为真。

以上是关于postgreSQL - 更新同一个表中的列的主要内容,如果未能解决你的问题,请参考以下文章

从 jdbc/postgresql 获取新创建表的列元数据

使用表中的列在 PostgreSQL 中创建视图

PostgreSQL - 如何保持列更新

将 JSON 字符串数组设置为 PostgreSQL 表中的列

如何在不先定义表中的列的情况下将数据加载到 PostgreSQL 中?

如何根据从另一个表中选择的结果更新一个表中的列