Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Zwraca odrębne wiersze, porównując wyniki dwóch zapytań.
Funkcja EXCEPT zwraca różne wiersze z lewego zapytania wejściowego, które nie są wyjściowe przez prawe zapytanie wejściowe.
Funkcja INTERSECT zwraca różne wiersze, które są wynikiem zarówno lewego, jak i prawego operatora zapytań wejściowych.
Aby połączyć zestawy wyników dwóch zapytań korzystających z wyjątku lub INTERSECT, podstawowe reguły to:
Liczba i kolejność kolumn muszą być takie same we wszystkich zapytaniach.
Typy danych muszą być zgodne.
Transact-SQL konwencje składni
Syntax
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
Arguments
<
> query_specification | ( <query_expression> )
Jest specyfikacją zapytania lub wyrażeniem zapytania, które zwraca dane do porównania z danymi z innej specyfikacji zapytania lub wyrażenia zapytania. Definicje kolumn, które są częścią operacji Z WYJĄTKIEM lub INTERSECT, nie muszą być takie same. Jednak muszą być porównywalne poprzez niejawną konwersję. Gdy typy danych różnią się, reguły pierwszeństwa typu danych określają typ danych, który jest uruchamiany do porównania.
Wynik jest oparty na tych samych regułach łączenia wyrażeń, gdy typy są takie same, ale różnią się precyzją, skalą lub długością. Aby uzyskać więcej informacji, zobacz Precyzja, Skalowanie i Długość (Transact-SQL).
Specyfikacja kwerendy lub wyrażenie nie mogą zwracać kolumn typu xml, text, ntext, image ani nonbinary CLR zdefiniowanych przez użytkownika, ponieważ te typy danych nie są porównywalne.
EXCEPT
Zwraca wszelkie odrębne wartości z lewej strony zapytania operatora EXCEPT. Te wartości zwracają tak długo, jak długo właściwe zapytanie nie zwraca również tych wartości.
INTERSECT
Zwraca wszelkie odrębne wartości zwracane przez zapytanie po lewej i prawej stronie operatora INTERSECT.
Remarks
Typy danych porównywalnych kolumn są zwracane przez zapytania po lewej i prawej stronie operatorów Z WYJĄTKIEM lub INTERSECT. Te typy danych mogą zawierać typy danych znaków z różnymi sortowaniami. Gdy to zrobią, wymagane porównanie jest uruchamiane zgodnie z regułami pierwszeństwa sortowania. Jeśli nie możesz uruchomić tej konwersji, aparat bazy danych programu SQL Server zwraca błąd.
Podczas porównywania wartości kolumn na potrzeby określania wierszy DISTINCT dwie wartości NULL są traktowane jako równe.
Z WYJĄTKIEM i INTERSECT zwracają nazwy kolumn zestawu wyników, które są takie same jak nazwy kolumn zwracane przez zapytanie po lewej stronie operatora.
Nazwy kolumn lub aliasy w klauzulach ORDER BY muszą odwoływać się do nazw kolumn zwróconych przez zapytanie po lewej stronie.
Dopuszczanie wartości null dowolnej kolumny w zestawie wyników zwracanym przez wyjątek lub INTERSECT jest takie samo jak wartość null odpowiadającej kolumnie zwracanej przez zapytanie po lewej stronie operatora.
Jeśli wyjątek lub INTERSECT jest używany razem z innymi operatorami w wyrażeniu, jest obliczany w kontekście następującego pierwszeństwa:
Wyrażenia w nawiasach
Operator INTERSECT
Z WYJĄTKIEM i UNION obliczone od lewej do prawej na podstawie ich pozycji w wyrażeniu
Możesz użyć funkcji Z WYJĄTKIEM lub INTERSECT, aby porównać więcej niż dwa zestawy zapytań. Po wykonaniu tej czynności konwersja typu danych jest określana przez porównanie dwóch zapytań jednocześnie i zgodnie z wcześniej wymienionymi regułami oceny wyrażeń.
Z WYJĄTKIEM i INTERSECT nie można używać w rozproszonych definicjach widoku partycjonowanego, powiadomieniach o zapytaniach.
Z WYJĄTKIEM i INTERSECT mogą być używane w zapytaniach rozproszonych, ale są wykonywane tylko na serwerze lokalnym i nie są wypychane do połączonego serwera. W związku z tym użycie funkcji EXCEPT i INTERSECT w zapytaniach rozproszonych może mieć wpływ na wydajność.
W zestawie wyników można używać szybkich kursorów tylko do przodu i statycznych, gdy są one używane z operacją Z WYJĄTKIEM lub INTERSECT. Można również użyć kursora dynamicznego lub sterowanego kluczami razem z operacją Z WYJĄTKIEM lub INTERSECT. Gdy to zrobisz, kursor zestawu wyników operacji jest konwertowany na kursor statyczny.
Gdy operacja Z wyjątkiem jest wyświetlana przy użyciu funkcji Graficzne showplan w programie SQL Server Management Studio, operacja jest wyświetlana jako lewe sprzężenia antysemickie, a operacja INTERSECT jest wyświetlana jako lewe sprzężenia częściowe.
Examples
W poniższych przykładach pokazano INTERSECT użycie operatorów i EXCEPT . Pierwsze zapytanie zwraca wszystkie wartości z Production.Product tabeli w celu porównania z wynikami za pomocą INTERSECT wartości i EXCEPT.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product ;
--Result: 504 Rows
Poniższe zapytanie zwraca wszystkie odrębne wartości zwracane przez zapytanie po lewej i prawej stronie INTERSECT operatora.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
Poniższe zapytanie zwraca wszystkie odrębne wartości z lewej EXCEPT strony zapytania operatora, które nie zostały również znalezione w prawym zapytaniu.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 266 Rows (products without work orders)
Poniższe zapytanie zwraca wszystkie odrębne wartości z lewej EXCEPT strony zapytania operatora, które nie zostały również znalezione w prawym zapytaniu. Tabele są odwracane od poprzedniego przykładu.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.WorkOrder
EXCEPT
SELECT ProductID
FROM Production.Product ;
--Result: 0 Rows (work orders without products)
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
W poniższych przykładach pokazano, jak używać INTERSECT operatorów i EXCEPT . Pierwsze zapytanie zwraca wszystkie wartości z FactInternetSales tabeli w celu porównania z wynikami za pomocą INTERSECT wartości i EXCEPT.
-- Uses AdventureWorks
SELECT CustomerKey
FROM FactInternetSales;
--Result: 60398 Rows
Poniższe zapytanie zwraca wszystkie odrębne wartości zwracane przez zapytanie po lewej i prawej stronie INTERSECT operatora.
-- 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.)
Poniższe zapytanie zwraca wszystkie odrębne wartości z lewej EXCEPT strony zapytania operatora, które nie zostały również znalezione w prawym zapytaniu.
-- 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.)