Aracılığıyla paylaş


İşleçleri Ayarla - EXCEPT ve INTERSECT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

İki sorgunun sonuçlarını karşılaştırarak farklı satırlar döndürür.

EXCEPT, sol giriş sorgusundan sağ giriş sorgusu tarafından çıkarilmeyen ayrı satırlar döndürür.

INTERSECT, hem sol hem de sağ giriş sorguları işleci tarafından çıkış yapılan ayrı satırlar döndürür.

EXCEPT veya INTERSECT kullanan iki sorgunun sonuç kümelerini birleştirmek için temel kurallar şunlardır:

  • Sütunların sayısı ve sırası tüm sorgularda aynı olmalıdır.

  • Veri türlerinin uyumlu olması gerekir.

Transact-SQL söz dizimi kuralları

Syntax

{ <query_specification> | ( <query_expression> ) }   
{ EXCEPT | INTERSECT }  
{ <query_specification> | ( <query_expression> ) }  

Arguments

< > query_specification | ( <query_expression> )
Başka bir sorgu belirtiminden veya sorgu ifadesinden alınan verilerle karşılaştırılacak verileri döndüren bir sorgu belirtimi veya sorgu ifadesidir. EXCEPT veya INTERSECT işleminin parçası olan sütunların tanımlarının aynı olması gerekmez. Ancak örtük dönüştürme ile karşılaştırılabilir olmalıdır. Veri türleri farklı olduğunda, veri türü önceliği kuralları karşılaştırma için çalıştırılacak veri türünü belirler.

Sonuç, türler aynı olduğunda ancak duyarlık, ölçek veya uzunluk bakımından farklı olduğunda ifadeleri birleştirmek için aynı kuralları temel alır. Daha fazla bilgi için bkz . Duyarlık, Ölçek ve Uzunluk (Transact-SQL).

Sorgu belirtimi veya ifadesi xml, metin, ntext, görüntü veya bağlayıcı olmayan CLR kullanıcı tanımlı tür sütunları döndüremez çünkü bu veri türleri karşılaştırılamaz.

EXCEPT
EXCEPT işlecinin solundaki sorgudan tüm ayrı değerleri döndürür. Bu değerler, doğru sorgu da bu değerleri döndürmediği sürece döndürür.

INTERSECT
INTERSECT işlecinin hem sol hem de sağ tarafındaki sorgu tarafından döndürülen tüm ayrı değerleri döndürür.

Remarks

Karşılaştırılabilir sütunların veri türleri EXCEPT veya INTERSECT işleçlerinin solundaki ve sağındaki sorgular tarafından döndürülür. Bu veri türleri, farklı harmanlamalara sahip karakter veri türlerini içerebilir. Bunu yaptıklarında, gerekli karşılaştırma harmanlama önceliği kurallarına göre çalıştırılır. Bu dönüştürmeyi çalıştıramıyorsanız, SQL Server Veritabanı Altyapısı bir hata döndürür.

DISTINCT satırlarını belirlemek için sütun değerleri karşılaştırılırken, iki NULL değer eşit kabul edilir.

EXCEPT ve INTERSECT, sonuç kümesinin sütun adlarını, işlecin sol tarafındaki sorgunun döndürdüğü sütun adlarına benzer şekilde döndürür.

ORDER BY yan tümcelerindeki sütun adları veya diğer adların sol taraftaki sorgu tarafından döndürülen sütun adlarına başvurması gerekir.

EXCEPT veya INTERSECT tarafından döndürülen sonuç kümesindeki herhangi bir sütunun null atanabilirliği, işlecin sol tarafındaki sorgu tarafından döndürülen ilgili sütunun null atanabilirliğiyle aynıdır.

İFADEdeki diğer işleçlerle birlikte EXCEPT veya INTERSECT kullanılıyorsa, aşağıdaki öncelik bağlamında değerlendirilir:

  1. Parantez içindeki ifadeler

  2. INTERSECT işleci

  3. EXCEPT ve UNION ifadedeki konumlarına göre soldan sağa doğru değerlendirildi

İkiden fazla sorgu kümesini karşılaştırmak için EXCEPT veya INTERSECT kullanabilirsiniz. Bunu yaptığınızda, veri türü dönüştürme, bir kerede iki sorgu karşılaştırılarak ve daha önce bahsedilen ifade değerlendirme kurallarına uyularak belirlenir.

EXCEPT ve INTERSECT, dağıtılmış bölümlenmiş görünüm tanımlarında, sorgu bildirimlerinde kullanılamaz.

EXCEPT ve INTERSECT dağıtılmış sorgularda kullanılabilir, ancak yalnızca yerel sunucuda yürütülür ve bağlı sunucuya gönderilmez. Bu nedenle, dağıtılmış sorgularda EXCEPT ve INTERSECT kullanmak performansı etkileyebilir.

Bir EXCEPT veya INTERSECT işlemiyle kullanıldığında sonuç kümesinde yalnızca ileriye doğru hızlı ve statik imleçler kullanabilirsiniz. Bir EXCEPT veya INTERSECT işlemiyle birlikte anahtar kümesi temelli veya dinamik bir imleç de kullanabilirsiniz. Bunu yaptığınızda, işlem sonuç kümesinin imleci statik imlece dönüştürülür.

SQL Server Management Studio'daki Grafik Showplan özelliği kullanılarak BIR EXCEPT işlemi görüntülendiğinde, işlem sol yarıya karşı birleşim olarak, INTERSECT işlemi ise sol yarı birleştirme olarak görünür.

Examples

Aşağıdaki örneklerde ve INTERSECT işleçlerinin EXCEPT kullanımı gösterilmektedir. İlk sorgu, ve Production.Productile INTERSECT sonuçları karşılaştırmak için tablodaki tüm değerleri EXCEPT döndürür.

-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.Product ;  
--Result: 504 Rows  

Aşağıdaki sorgu, işlecin hem sol hem de sağ tarafındaki INTERSECT sorgu tarafından döndürülen benzersiz değerleri döndürür.

-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.Product  
INTERSECT  
SELECT ProductID   
FROM Production.WorkOrder ;  
--Result: 238 Rows (products that have work orders)  

Aşağıdaki sorgu, işlecin solundaki EXCEPT sorgudan, sağ sorguda da bulunmayan benzersiz değerleri döndürür.

-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.Product  
EXCEPT  
SELECT ProductID   
FROM Production.WorkOrder ;  
--Result: 266 Rows (products without work orders)  

Aşağıdaki sorgu, işlecin solundaki EXCEPT sorgudan, sağ sorguda da bulunmayan benzersiz değerleri döndürür. Tablolar önceki örnekten tersine çevrilir.

-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.WorkOrder  
EXCEPT  
SELECT ProductID   
FROM Production.Product ;  
--Result: 0 Rows (work orders without products)  

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

Aşağıdaki örneklerde ve INTERSECT işleçlerinin EXCEPT nasıl kullanılacağı gösterilmektedir. İlk sorgu, ve FactInternetSalesile INTERSECT sonuçları karşılaştırmak için tablodaki tüm değerleri EXCEPT döndürür.

-- Uses AdventureWorks  
  
SELECT CustomerKey   
FROM FactInternetSales;  
--Result: 60398 Rows  

Aşağıdaki sorgu, işlecin hem sol hem de sağ tarafındaki INTERSECT sorgu tarafından döndürülen benzersiz değerleri döndürür.

-- Uses AdventureWorks  
  
SELECT CustomerKey   
FROM FactInternetSales    
INTERSECT   
SELECT CustomerKey   
FROM DimCustomer   
WHERE DimCustomer.Gender = 'F'  
ORDER BY CustomerKey;  
--Result: 9133 Rows (Sales to customers that are female.)  

Aşağıdaki sorgu, işlecin solundaki EXCEPT sorgudan, sağ sorguda da bulunmayan benzersiz değerleri döndürür.

-- Uses AdventureWorks  
  
SELECT CustomerKey   
FROM FactInternetSales    
EXCEPT   
SELECT CustomerKey   
FROM DimCustomer   
WHERE DimCustomer.Gender = 'F'  
ORDER BY CustomerKey;  
--Result: 9351 Rows (Sales to customers that are not female.)