Puedo actualizar bien y puedo eliminar bien, pero quiero hacer ambas cosas a la vez.
Tengo una tabla ORIG como esta, los nombres de las columnas son
ref,fname,lname,add1,add2,add3,add4 A1 abcdhj S2 fdseyt B3 jfseopDonde la primera columna es única
luego otra tabla DATA como esta
ref,fname,lname,add1,add2 A1 bcde B3 kghtQuiero actualizar la primera tabla usando la segunda y eliminar las filas que no tienen el único
Entonces, el resultado final debe ser la tabla ORIG como a continuación
A1 bcdehj B3 kghtop¿Puedo lograr esto de una sola vez?
Podría abordar esto usando CTE:
with u as ( update orig set b = db, . . . from data d where da = orig.a returning * ) delete from orig where not exists (select 1 from u where ua = da);El primer CTE actualiza las filas. El segundo hace la eliminación.
Puede usar una subconsulta correlacionada para esto:
delete from orig o where not exists ( select 1 from data d where d.col1 = o.col1 )