Update tbl2 set col4 =(select col4 from tbl1 where
tbl1.col1=tbl2.col1 and tbl1.col2=tbl2.col2 and
tbl1.col3=tbl2.col3) and (tbl2.col1, tbl2.col2, tbl2.col3) in ( select col1, col2, col3 from tbl1)
Inače, mislim da oba koda uredno rade ono što trebaju. JOIN bi trebao biti malo brži, ali je meni iz nekog razloga subquery čitljiviji pa ga koristim za ovakve jednokratne upite kad par milisekundi ne čini razliku.
I meni je tvoj kod čitljiviji.
Moguće da bi trebalo da može i sa CASE WHEN i čini mi se da bi tako bilo još i najbrže osim ako tabele nisu identične pa bi onda najbrže bilo brisanje tabele b i kopiranje a.
Pogrijesio sam.
Umjesto drugog and je trebao biti where.
Napisao sam da pisem sa moba,pa mi je malo tesko.
Ovaj drugi uvjet je osiguranje, ako u drugoj tablici postoji zapis, a u prvog ga nema, da ne update-a kolonu na null, ako postoji vec neka neka vrijednost.