我有一个 table 地址

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

但是有一个语法错误。

最佳答案

您不能在更新语句中使用这样的 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 - 更新同一个表中的一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36472765/

10-11 21:37