Я не вижу проблем в использовании подвыбора в предложении WHERE оператора обновления.
Для второго запроса, возвращающего значение id, я знаю, что это возможно в DB2, иможет быть, другие тоже реализуют этот синтаксис:
SELECT id FROM FINAL TABLE (
update ... set ... where id = (select id from ...)
)
Это работает также для операторов INSERT и DELETE.(См. документацию .)