Semi-Joins z Oprócz wykonywania i część wspólna
Semi-łączyć zwracająca wiersze z pierwszego wprowadzania, jeśli istnieje co najmniej jeden zgodny wiersz w wejściowy drugiej.Anti-łączyć zwracająca wiersze z pierwszego wprowadzania, jeśli nie ma żadnych zgodnych wierszy w drugim wprowadzania.Oprócz używania i przecinają się podmiotów gospodarczych do semi-joins i anti-joins.Te operatory pozwalają porównać wyniki dwóch lub więcej instrukcji SELECT i zwraca wartooci distinct.Operator oprócz zwraca wszystkie wartooci distinct z kwerendy po lewej stronie operatora oprócz, które nie są także zwracane przez kwerendy po prawej stronie.PRZECIĘCIE zwraca różnych wartości, które są zwracane przez kwerendy zarówno po lewej i po prawej stronie operator PRZECIĘCIE.Zestawy wyników, które są porównywane, korzystając z wyjątkiem lub przecinają się musi mieć tę samą strukturę.Muszą mieć taką samą liczbę kolumn i odpowiednich kolumn zestaw wyników musi mieć typ danych zgodny.Aby uzyskać więcej informacji, zobacz Z wyjątkiem i PRZECIĘCIE (Transact-SQL).
Należy rozważyć tabel TableA, TableB, i TableC z następującymi danymi w ich odpowiednich int kolumny Kol1.
TableA (int Kol1) |
TableB (int Kol1) |
TableC (int Kol1) |
---|---|---|
NULL |
NULL |
2 |
NULL |
1 |
2 |
NULL |
3 |
2 |
1 |
4 |
4 |
2 |
4 |
4 |
2 |
||
2 |
||
3 |
||
4 |
||
4 |
Korzystanie z wyjątkiem poniższa kwerenda zwraca wszystkie wartooci distinct z kwerendy do lewy operand oprócz, że nie występują również na kwerendę prawym.
SELECT * FROM TableA EXCEPT SELECT * FROM TableB
Oto zestaw wyników.
Col1
-----------
2
(1 row(s) affected)
Używając PRZECIĘCIE, ta kwerenda zwraca różnych wartości, które są zwracane przez kwerendy zarówno po lewej i po prawej stronie operator PRZECIĘCIE.
SELECT * FROM TableA INTERSECT SELECT * FROM TableB
Oto zestaw wyników.
Col1
-----------
NULL
1
3
4
(4 row(s) affected)
Oprócz PRZECIĘCIE operator ma pierwszeństwo.Na przykład poniższa kwerenda używa oba operatory:
SELECT * FROM TableA EXCEPT SELECT * FROM TableB INTERSECT SELECT * FROM TableC
Oto zestaw wyników.
Col1
-----------
NULL
1
2
3
(4 row(s) affected)