UPDATE is already implemented as a SELECT of ROWID, unchanged fields and SET fields followed by an INSERT of the new row UPDATE a SET bunny=1 WHERE EXISTS (SELECT 1 FROM b WHERE a.this = b.that); asql> explain query plan update a set bunny=1 where exists (select 1 from b where a.this = b.that); id parent notu deta ---- ------------- ---- ---- 4 0 0 SCAN TABLE a 6 0 0 CORRELATED SCALAR SUBQUERY 10 6 0 SEARCH TABLE b USING COVERING INDEX b_that (that=?)