Osman KURT

Kendime Not

SQL de İki Tabloyu Birbiriyle Merge'leme

Bu yazımda size elinize bulunan 2 tabloyu birbiyle mergeleme (birleştirme) olayından bahsedeceğim. Yalnız aynı olan verileri almamak şartıyla. Örneğin elinizde bir mail listeniz var ve bu mail listenize yeni veriler eklemek istiyorsunuz. Ama var olan listenizde yeni eklenecek olan maillerden var mı bilmek istiyorsunuz ve aynı verileri gereksiz yere saklamak istemiyorsunuz. İşte tamda burada merge olayı devrey giriyor çünkü tek tek kontrol etmeye kalkarsanız ve dolu bir veri listeniz varsa gerçekten bu çile haline gelebilir.

Sql de merge olayı kasıyormu?

Kısa söylemek gerekirse HAYIR. Insert yada update zamanından fazla bir zaman almıyor.

Kullanımı;

İlk olarak ben liste halindeki verilerimi bir adet DataTable'e yazdım. Daha sonra önüne "#" koyarak oluşturduğum temp tabloma DataTablemi kayıt ettiim. Bu arada # işareti koyarak sql'de oluşturduğum temp tablom connection close olduğu anda kendiliğinden kayboluyor haberiniz olsun. Daha sonra merge olayımız devreye giriyor. İstediğimiz koşuluda yazabiliyoruz aynı zamanda.

Benim temp tablomun adı A, asıl kayıt atacağım tablom da MailListesi olsun ve kodumuz alt kısım da mevcut,

 

MERGE MailListesi cm 
USING A ON cm.FirmaID = A.FirmaID and cm.Mail = A.Mail
WHEN NOT MATCHED THEN
       INSERT (FirmaID,Mail)
       VALUES (A.FirmaID,A.Mail);

 

Kısa zaman sonra ufak bir örnek uygulamayıda buaradan paylaşacağım.

Görüşmek üzere

Osman KURT
Yazılım Uzmanı