UPDATEの条件に他のテーブルを含める時の書き方は、各DBでかなり違うようです。
ここではPostgreSQLでの書き方をメモ。
update foo
set foo_col1 = true
from bar
where
foo.col2 = bar.col2
and bar.bar_col3 = 'hoge'
and foo.foo_col3::date = current_date
;
from句のあとに接続相手のテーブルを書いて、where句で接続するのがポイント。
update foo
set foo_col1 = true
from foo
inner join bar using(col2)
where
bar.bar_col3 = 'hoge'
and foo.foo_col3::date = current_date
;
とかやりたくなっちゃいましたけど、これだとエラーが出てしまいます。