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
    ;

とかやりたくなっちゃいましたけど、これだとエラーが出てしまいます。