A tuhle syntaxi Firebird umí?
Podle tohoto (od 2.5) ano:
https://stackoverflow.com/questions/7633195/firebird-update-rows-value-in-table-basing-on-some-condition
Mně to nešlo, ani podle dokumentace se mi to moc nezdá.
Určitě jde udělat něco jako
UPDATE FLATS F SET F.FLATNUMBER = (SELECT ...)
ale pokud jsou pak podmínky nějaké košatější, připadá mi lepší ten blok.