Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Két lekérdezés eredményeinek összehasonlításával különböző sorokat ad vissza.
A KIVÉVE a bal oldali bemeneti lekérdezéstől eltérő sorokat ad vissza, amelyeket nem a megfelelő bemeneti lekérdezés ad ki.
Az INTERSECT különböző sorokat ad vissza, amelyeket a bal és a jobb oldali bemeneti lekérdezések operátora is kimenetként ad vissza.
A EXCEPT vagy AZ INTERSECT elemet használó két lekérdezés eredményhalmazainak kombinálásához az alapvető szabályok a következők:
Az oszlopok számának és sorrendjének minden lekérdezésben azonosnak kell lennie.
Az adattípusoknak kompatibilisnek kell lenniük.
Transact-SQL szintaxis konvenciók
Syntax
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
Arguments
<
> query_specification | ( <query_expression> )
Olyan lekérdezési specifikáció vagy lekérdezési kifejezés, amely egy másik lekérdezési specifikációból vagy lekérdezési kifejezésből származó adatokkal összehasonlítandó adatokat ad vissza. A EXCEPT vagy AZ INTERSECT művelet részét képező oszlopok definícióinak nem kell megegyeznie. Azonban implicit átalakítással összehasonlíthatóaknak kell lenniük. Ha az adattípusok eltérnek, az adattípus-elsőbbség szabályai határozzák meg az összehasonlításhoz futtatott adattípust.
Az eredmény ugyanazokon a szabályokon alapul, amelyek a kifejezések kombinálására vonatkoznak, ha a típusok azonosak, de pontosságuk, skálázásuk vagy hosszuk eltér. További információ: Pontosság, skálázás és hossz (Transact-SQL).
A lekérdezés specifikációja vagy kifejezése nem tud xml-, szöveg-, ntext-, kép- vagy nem kötési CLR-típusú oszlopokat visszaadni, mert ezek az adattípusok nem összehasonlíthatók.
EXCEPT
A KIVÉTEL operátortól balra lévő lekérdezéstől eltérő értékeket ad vissza. Ezek az értékek mindaddig visszaállnak, amíg a megfelelő lekérdezés nem adja vissza ezeket az értékeket.
INTERSECT
Az INTERSECT operátor bal és jobb oldalán lévő lekérdezés által visszaadott különböző értékeket adja vissza.
Remarks
Az összehasonlítható oszlopok adattípusait a EXCEPT vagy AZ INTERSECT operátor bal és jobb oldalán lévő lekérdezések adják vissza. Ezek az adattípusok tartalmazhatnak különböző rendezésű karakteradattípusokat. Ha igen, a szükséges összehasonlítás a rendezési sorrend szabályai szerint fut. Ha nem tudja futtatni ezt az átalakítást, az SQL Server adatbázismotorja hibát ad vissza.
A DISTINCT sorok meghatározásához használt oszlopértékek összehasonlításakor a rendszer két NULL értéket egyenlőnek tekint.
A KIVÉVE és az INTERSECT az eredményhalmaz oszlopneveit adja vissza, amelyek megegyeznek az operátor bal oldalán lévő lekérdezés által visszaadott oszlopnevekkel.
Az ORDER BY záradékokban szereplő oszlopneveknek vagy aliasoknak a bal oldali lekérdezés által visszaadott oszlopnevekre kell hivatkoznia.
A EXCEPT vagy AZ INTERSECT által visszaadott eredményhalmaz bármely oszlopának nullsága megegyezik az operátor bal oldalán lévő lekérdezés által visszaadott megfelelő oszlop nullhatóságával.
Ha a EXCEPT vagy az INTERSECT kifejezés más operátorokkal együtt van használva, akkor a rendszer a következő sorrendben értékeli ki:
Kifejezések zárójelben
Az INTERSECT operátor
A EXCEPT és a UNION kiértékelése balról jobbra a kifejezésben elfoglalt pozíciójuk alapján
A EXCEPT vagy az INTERSECT használatával kétnál több lekérdezést hasonlíthat össze. Ha így tesz, az adattípus-átalakítást két lekérdezés összehasonlításával és a korábban említett kifejezéskiértékelési szabályok követésével határozzuk meg.
A KIVÉVE és az INTERSECT nem használható elosztott particionált nézetdefiníciókban, lekérdezési értesítésekben.
A KIVÉVE és az INTERSECT használható elosztott lekérdezésekben, de csak a helyi kiszolgálón hajtja végre, és nem küldi el a csatolt kiszolgálóra. Így a EXCEPT és az INTERSECT elosztott lekérdezésekben való használata befolyásolhatja a teljesítményt.
A csak gyors előre és statikus kurzorokat akkor használhatja az eredményhalmazban, ha CSAK vagy INTERSECT művelettel használják őket. Billentyűkészlet-vezérelt vagy dinamikus kurzort is használhat a EXCEPT vagy AZ INTERSECT művelettel együtt. Ha így tesz, a művelet eredményhalmazának kurzora statikus kurzorrá alakul.
Ha a EXCEPT művelet az SQL Server Management Studióban a Graphical Showplan funkcióval jelenik meg, a művelet bal oldali anti semi joinként jelenik meg, az INTERSECT művelet pedig bal oldali félillesztésként jelenik meg.
Examples
Az alábbi példák az és INTERSECT az EXCEPT operátorok használatát mutatják be. Az első lekérdezés a tábla összes értékét visszaadja, Production.Product hogy összehasonlíthassa az eredményeket a következővel INTERSECT : és EXCEPT.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product ;
--Result: 504 Rows
Az alábbi lekérdezés az operátor bal és jobb oldalán INTERSECT lévő lekérdezés által visszaadott különböző értékeket adja vissza.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
Az alábbi lekérdezés az operátor bal oldali lekérdezésétől EXCEPT eltérő értékeket ad vissza, amelyek a megfelelő lekérdezésben sem találhatók.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 266 Rows (products without work orders)
Az alábbi lekérdezés az operátor bal oldali lekérdezésétől EXCEPT eltérő értékeket ad vissza, amelyek a megfelelő lekérdezésben sem találhatók. A táblák fordítottak az előző példához képest.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.WorkOrder
EXCEPT
SELECT ProductID
FROM Production.Product ;
--Result: 0 Rows (work orders without products)
Példák: Azure Synapse Analytics and Analytics Platform System (PDW)
Az alábbi példák bemutatják az operátorok és INTERSECT az EXCEPT operátorok használatát. Az első lekérdezés a tábla összes értékét visszaadja, FactInternetSales hogy összehasonlíthassa az eredményeket a következővel INTERSECT : és EXCEPT.
-- Uses AdventureWorks
SELECT CustomerKey
FROM FactInternetSales;
--Result: 60398 Rows
Az alábbi lekérdezés az operátor bal és jobb oldalán INTERSECT lévő lekérdezés által visszaadott különböző értékeket adja vissza.
-- 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.)
Az alábbi lekérdezés az operátor bal oldali lekérdezésétől EXCEPT eltérő értékeket ad vissza, amelyek a megfelelő lekérdezésben sem találhatók.
-- 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.)