Semi-Joins DIŞINDAKİLER ile gerçekleştiriliyor ve KESİŞTİR
İkinci girişte eşleşen en az bir satır, bir semi-birleştirmek ilk girişten satır döndürür.İkinci girişte eşleşen hiçbir satır, bir anti-birleştirmek ilk girişten satır döndürür.Semi-joins ve anti-joins gerçekleştirmek için işleçler KESİŞEN ve DIŞINDAKİLER kullanın.Bu iþleçler, iki veya daha fazla select deyimi sonuçlar karşılaştırmak ve farklı değerlere dönmek etkinleştirin.DIŞINDAKİLER işleç sorgudan DIŞINDAKİLER sol tarafında herhangi bir değeri döndürür işleç değil de döndürülmesidir sorgulamadan sağ tarafta.INTERSECT sol ve sağ tarafında INTERSECT işleç üzerinde her iki sorgu tarafından döndürülen farklı değerleri döndürür.Kullanarak karşılaştırıldığında sonuç kümeleri dışında veya KESİŞEN gereken tüm aynı yapıya sahip.Aynı sayıda sütun olması gerekir ve karşılık gelen sonuç küme sütunlarından uyumlu veri türlerine sahip olmanız gerekir.Daha fazla bilgi için bkz: DIŞINDA ve INTERSECT (Transact-sql).
Tabloları göz önünde TableA, TableB, ve TableC bunların ilgili aşağıdaki veri ile int sütun col1.
TableA (col1 int) |
TableB (col1 int) |
TableC (col1 int) |
---|---|---|
NULL |
NULL |
2 |
NULL |
1 |
2 |
NULL |
3 |
2 |
1 |
4 |
4 |
2 |
4 |
4 |
2 |
||
2 |
||
3 |
||
4 |
||
4 |
Kullanarak dışında aşağıdaki sorgu herhangi bir değeri sorgudan da sağ sorgu üzerinde bulunan DIŞINDAKİLER işlenen sola döndürür.
SELECT * FROM TableA EXCEPT SELECT * FROM TableB
Sonuç kümesi buradadır.
Col1
-----------
2
(1 row(s) affected)
INTERSECT kullanan, bu sorgu her iki sorgu tarafından döndürülen sol ve sağ tarafında INTERSECT işleç ayrı değerleri döndürür.
SELECT * FROM TableA INTERSECT SELECT * FROM TableB
Sonuç kümesi buradadır.
Col1
-----------
NULL
1
3
4
(4 row(s) affected)
DIŞINDAKİLER INTERSECT işleç önceliklidir.Örneğin, aşağıdaki sorgu her iki operatör kullanır:
SELECT * FROM TableA EXCEPT SELECT * FROM TableB INTERSECT SELECT * FROM TableC
Sonuç kümesi buradadır.
Col1
-----------
NULL
1
2
3
(4 row(s) affected)