MySQLでselect結果でupdateする(副問い合わせ付き)

表題の件、副問い合わせselectの先の方で必要な情報がつながるのでやらざるを得なくてやったのですがすごい違和感。ちゃんと通るのですよコレ。
スパっとupdateされます。

UPDATE `tableA` r,
       (SELECT id,c.hoge
        FROM `tableA` r
              JOIN tableB e ON r.aa = e.aa
              JOIN tableC c ON c.bb = e.bb) x
SET
r.hoge = x.hoge
WHERE
r.id = x.id;

SQLってパワフルね〜