daybreaksnow's diary

私を私と呼びたい

[PostgreSQL]UPDATEとDELETEでのJOIN

UPDATE文。SETで指定するカラム名エイリアス名を付けるとエラーになる

UPDATE hoge H
SET val = 'fuga' 
FROM piyo P
WHERE H.code = P.code --joinの条件部
 AND P.piyoyo= 'XXX'

DELETE文。

DELETE FROM hoge H
USING piyo P
WHERE H.code = P.code
AND P.piyoyo = 'XXX'

Postgreのバージョンによってはエイリアスがつけられないらしい。(8.1以前)
参考:http://d.hatena.ne.jp/hhelibex/20110509/1304969768


SQL Serverの場合はUPDATEもDELETEも同じようにjoinが書けて綺麗。

UPDATE H
SET val = 'fuga'
FROM hoge H
JOIN piyo P
 ON H.code = P.code
WHERE P.piyoyo = 'XXX'