2016-04-07 29 views
0

私は今、私は私が試したコラムadr_debitorpostgreSQLの - 同じテーブルに列を更新

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

を更新したいテーブルの住所

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

を持っている:

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 

しかし、構文エラーがあります。

+0

adr1.adr_debitorを追加する必要はありませんでした - これは間違っているようです 同じ列に参加する必要があります。 – voytech

答えて

0

更新文のような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 NULLadr1.adr_overがnullでない場合adr1.adr_over = adr2.adr_idにのみtrueになります条件として必要ありません。私は私にそれをやったとき

0

が、それはこの

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_debitorが私のためにエラーを与えていた、私はadr1.adr_over = adr2.adr_id ON SET

関連する問題