読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

update文にfrom句!?

こんな感じのSQL文があった。

UPDATE table_a
SET    column_a = 1
FROM
       ( SELECT column_b,
                column_c,
                column_d
         FROM   table_b
       ) table_b
WHERE  column_a = 2
   AND table_b.column_b   = table_a.column_b
   AND table_b.column_c   = table_a.column_c
   AND table_b.column_d   = table_a.column_d

なんじゃこりゃ!?っと思ったけど、PostgreSQLの非標準拡張らしい。

UPDATE table SET column = expression [, ...] [ FROM fromlist ] [ WHERE condition ]

fromlist A Postgres non-standard extension to allow columns from other tables to appear in the WHERE condition. WHERE 条件に他のテーブル上のカラムを指定できるように する Postgresの非標準的拡 張。