DIŞINDA ve INTERSECT (Transact-SQL)
İki sorgu sonuçlar karşılaştırarak farklı değerler döndürür.
Soldan ayrı değerleri döndürür dışında sorgulamak da sağ sorgu üzerinde bulunamadı.
INTERSECT sol ve sağ tarafında INTERSECT işlenen her iki sorgu tarafından döndürülen farklı değerleri döndürür.
İki sonuç kümelerini birleştirmek temel kuralları dışında kullanan sorgular veya INTERSECT şunlardır:
Tüm sorgular aynı sıra ve sütun olması gerekir.
Veri türleri uyumlu olmalıdır.
Sözdizimi
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
Bağımsız değişkenler
<query_specification> | ( <query_expression> )
Bir sorgu belirtimi veya başka bir sorgu belirtimi veya sorgu ifadealınan verilerle karşılaştırmak için veri döndüren sorgu ifade edilir.Bir DIŞINDAKİLER parçası veya işlem KESİŞEN sütun tanımları aynı olması gerekmez, ancak örtük dönüştürme karşılaştırılabilir olmalıdır.Farklı veri türleri, karşılaştırma yapmak ve sonuçlar belirledi dönmek için kullanılan türü kuralları esas veri türü önceliği.Türleri aynı duyarlık, ölçek veya uzunluğu ancak farklı olduğunda sonuç ifadeler birleştirme aynı kurallara göre belirlenir.Daha fazla bilgi için, bkz. Duyarlık, ölçek ve uzunluk (Transact-SQL).
Sorgu belirtimi veya ifade döndüremez xml, text, ntext, image, ya da süreklilik CLR kullanıcı tanımlı türü sütunları bu veri türlerini karşılaştırılabilir olmaması nedeniyle.
DIŞINDA
Herhangi bir değeri sağ sorgudan da dönmedi DIŞINDAKİLER işlenen solundaki sorgu döndürür.KESİŞTİR
Sol ve sağ tarafında INTERSECT işlenen her iki sorgu tarafından döndürülen farklı değerleri döndürür.
Açıklamalar
DIŞINDAKİLER ve sağa sola sorgu tarafından döndürülen karşılaştırılabilir sütun veri türleri veya INTERSECT işlenen karakter veri türleri farklı alfabe ile çıkarıldığında, gerekli karşılaştırma kurallarına göre gerçekleştirilen harmanlama önceliği.Bu dönüştürme gerçekleştirilemiyor, SQL Server Veritabanı Altyapısı işlevi bir hata.
Ayrı değerler belirlemek için satır karşılaştırdığınızda, iki null değerleri eşit kabul edilir.
DIŞINDAKİLER tarafından döndürülen sütun adlarını sonuç kümesi veya INTERSECT işlenen solundaki sorgu tarafından döndürülen alanındakiyle aynı adları.
Sol taraftaki sorgu tarafından döndürülen sütun adları, sütun adları veya order by yan tümceleri diğer adlarda bulunmanız gerekir.
Herhangi bir sütun DIŞINDAKİLER tarafından döndürülen sonuç kümesi null atanabilirlik veya INTERSECT işlenen solundaki sorgu tarafından döndürülen karşılık gelen sütun null atanabilirlik ile aynı.
Eğer dışında veya INTERSECT, diğer operatörleri bir ifadeile birlikte kullanıldığında, aşağıdaki öncelik kapsamında değerlendirilir:
Parantez içindeki ifadeler
INTERSECT işlenen
DIŞINDA ve SENDİKA soldan sağa ifadekonumlarına göre değerlendirilmesi
Eğer dışında veya INTERSECT sorguları ikiden fazla kümeleri karşılaştırmak için kullanılan, saatve ifade değerlendirme yukarıda belirtilen kuralları aşağıdaki iki sorgu karşılaştırarak veri türü dönüştürme belirlenir.
DIŞINDA ve INTERSECT dağıtılmış bölümlü görünüm tanımları, sorgu bildirimleri veya compute ve compute by yan tümcesi ile birlikte kullanılamaz.
DIŞINDA ve INTERSECT kullanılabilir dağıtılmış sorgular, ancak öğeler yalnızca yerel sunucu üzerinde çalıştırılan ve bağlantılı sunucuitildiği değil.Bu nedenle, kullanarak dışında ve içinde KESİŞEN dağıtılmış sorguları performansını etkileyebilir.
Bir DIŞINDAKİLER ile kullanılan veya işlem KESİŞEN fast forward-only ve statik imleçler sonuç kümesi tam olarak desteklenir.Anahtar kümesi kullanımlı veya dinamik bir imleç ile birlikte bir DIŞINDAKİLER kullanılır veya INTERSECT işlemi, sonuç kümesi işleminin imleç bir statik imleçdönüştürülür.
DIŞINDAKİLER operasyonu görüntülendiğinde grafik Showplan özelliğini kullanarak SQL Server Management Studio, işlem olarak görünür bir Sol SEMI birleştirmekanti, INTERSECT işlemi olarak görünür ve bir Sol SEMI birleştirmek.
Örnekler
Aşağıdaki örnekler kullanarak INTERSECT ve EXCEPT işlenen.İlk sorguyu tüm değerleri döndüren Production.Product tablo karşılaştırma sonuçlar için INTERSECT ve EXCEPT.
USE AdventureWorks2008R2;
GO
SELECT ProductID
FROM Production.Product ;
--Result: 504 Rows
Sol ve sağ tarafında her iki sorgu tarafından döndürülen farklı değerleri aşağıdaki sorgu döndürür INTERSECT işlenen.
USE AdventureWorks2008R2;
GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
Aşağıdaki sorgu herhangi bir değeri sorgudan soluna döner EXCEPT işleneni değil de bulunan sağ sorgu.
USE AdventureWorks2008R2;
GO
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 266 Rows (products without work orders)
Aşağıdaki sorgu herhangi bir değeri sorgudan soluna döner EXCEPT işleneni değil de bulunan sağ sorgu.Tabloları önceki örnekten geri alınır.
USE AdventureWorks2008R2;
GO
SELECT ProductID
FROM Production.WorkOrder
EXCEPT
SELECT ProductID
FROM Production.Product ;
--Result: 0 Rows (work orders without products)