2017-12-21 3 views
0

こんにちは私は同じテーブルに基づいて行を更新します。データが ""(空)のすべての行に列 "データ"をコピーします。この行の「キー」は同じです。同じテーブルに基づいたPostgreSQLの更新行

id |data |key 
    ----|-----|----- 
    1 | xyz |key1 
    ----|-----|----- 
    2 | "" |key1 

私はそのような何かを試してみたが、 "関係aは存在しない":Postgresので

UPDATE a 
SET a.data = b.data 
FROM table a 
    INNER JOIN table b 
    ON (a.key = b.key) 
WHERE b.data != '""' 

答えて

1

、構文は次のとおりです。

UPDATE a 
    SET a.data = b.data 
    FROM a b 
    WHERE a.key = b.key AND b.data <> '""' AND a.data = '""'; 

注:これは、ことを前提としていaはテーブル名です。 bはテーブルのエイリアスで、 "join"条件はWHERE句にあります。 PostgresのSQLで

2

、あなたは、FROM句にします(JOINを使用することはできません)


UPDATE table_a dst -- <<-- target table 
SET data = src.data 
FROM table_a src  -- <<--- same table, different alias 
WHERE dst.key = src.key 
AND dst.data = '""' 
AND src.data <> '""' 
     ; 
にターゲット表の名前を繰り返してはなりません
関連する問題