Bir tabloda Update etmek istediğimiz alanın değerinin başka bir tablodan gelmesi gerekiyorsa, bunu alt sorgularla yapıyoruz.
update tablo1
set son_guncelleme_tarihi =
(
select max(guncelleme_tarihi)
from tablo2 where tablo1.kayit_no=tablo2.kayit_no
)
Peki birden çok alanın update edilmesi gerektiği durumlarda ne yapacağız? Her biri için birer alt sorgu yazmak yerine MERGE kullanımı daha yerinde olacaktır.
MERGE INTO TABLO1 T1
USING
(
SELECT
TAB1.ROWID AS RID,
TAB2.GUNCELLENECEK_SUTUN1 AS GUNC1,
TAB2.GUNCELLENECEK_SUTUN2 AS GUNC2,
TAB2.GUNCELLENECEK_SUTUNX AS GUNCX
FROM TABLO2 TAB2, TABLO1 TAB1
WHERE TAB1.PK_SUTUN=TAB2.PK_SUTUN
) T2
ON(T1.ROWID=T2.RID)
WHEN MATCHED THEN UPDATE
SET
T1.GUNCELLENECEK_SUTUN1=T2.GUNC1,
T1.GUNCELLENECEK_SUTUN2=T2.GUNC2,
T1.GUNCELLENECEK_SUTUNX=T2.GUNCX
Hiç yorum yok:
Yorum Gönder