SQL Server’da İki Tabloyu Karşılaştırmak
Herkese merhaba,
Bu yazıda sizlere SQL Server’da iki tabloyu karşılaştırmak hakkında bilgi vereceğim.
SQL Server’da bazı zamanlar benzer veriler içeren tabloları karşılaştırma ihtiyacı duyabiliyoruz. Bu gibi durumlarda aşağıdaki yöntemden yararlanarak farklılıkları görebilirsiniz. Örnek kodları inceleyelim.
--Database oluşturma CREATE DATABASE IkiFarklıTabloyuKarsilastir GO USE IkiFarklıTabloyuKarsilastir --Tablo oluşturma ve veri ekleme CREATE TABLE BirinciTablo ( Id [NCHAR](10) NOT NULL , Tip [NCHAR](10) NULL , Maliyet [MONEY] NULL, ) GO INSERT INTO BirinciTablo VALUES ( '001', '1', '40' ), ( '002', '2', '80' ), ( '003', '3', '120' ), ( '004', '4', '160' ), ( '004', '5', '160' ) GO CREATE TABLE IkinciTablo ( Id [NCHAR](10) NOT NULL , Tip [NCHAR](10) NULL , Maliyet [MONEY] NULL, ) GO INSERT INTO IkinciTablo VALUES ( '001', '1', '40.05' ), ( '002', '2', '80' ), ( '003', '6', '120' ), ( '004', '4', '160' ), ( '004', '5', '160.01' ) GO --İki tablo arasındaki farkı bulma işlemi --Birinci tablonun ikinci tablodan farkı SELECT ID, Tip, Maliyet FROM BirinciTablo EXCEPT SELECT ID, Tip, Maliyet FROM IkinciTablo --İkinci tablonun birinci tablodan farkı SELECT ID, Tip, Maliyet FROM IkinciTablo EXCEPT SELECT ID, Tip, Maliyet FROM BirinciTablo --Karşılaştırılan iki tablonun farklı verilerinin tek bir tablo halinde listelenmesi SELECT ID, Tip, Maliyet FROM ( SELECT ID, Tip, Maliyet FROM dbo.BirinciTablo UNION ALL SELECT ID, Tip, Maliyet FROM dbo.IkinciTablo ) A GROUP BY ID, Tip, A.Maliyet HAVING COUNT(*) <> 2
Yukarıda iki tablo oluşturduk. Bu tabloların alan sayıları, tipleri ve isimleri aynı. Bu tabloların içerisine aynı ve farklı veriler ekledik. İlk olarak except ifadesini kullanarak aralarındaki farkı bulduk. İkinci olarak bu farklı verilerin nasıl tek bir tablo halinde gösterileceği sorgusunu yazdık. Umarım anlaşılır olmuştur.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.