Udostępnij za pośrednictwem


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)