Laten we dbo.Customer en dbo.Country Table maken en vervolgens EXISTS gebruiken om records voor verschillende scenario's te retourneren.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), Age tinyint) GO insert into dbo.Customer Values ( 1,'Raza','M','PK',20), (2,'Rita','John','US',12), (3,'Sukhi','Singh',Null,25), (4,'James','Smith','CA',60), (5,'Robert','Ladson','US',54), (6,'Alice','John','US',87), (7,'Raza','M','US',33), (8,'Dita','M','US',15), (9,'Adita','M','US',29) Create table dbo.Country ( CId tinyint, CountryName VARCHAR(50), CountryShortName CHAR(2)) go Insert into dbo.Country Values (1,'Pakistan','Pk'), (2,'United States of America','US')
1) EXISTS retourneert TRUE als de subquery rijen bevat.
Dat klopt, als onze subquery rijen retourneert en we EXISTS hebben gebruikt, retourneert de buitenste query alle rijen.
Selecteer * van dbo.Customer
WHERE Exists ( Select 1)
Hoe EXISTS te gebruiken in SQL Server - SQL Server / TSQL-zelfstudie |
Merk op dat onze subquery een statische query is (Selecteer 1). Omdat subquery rij retourneerde en EXISTS TRUE retourneerde, worden alle records van dbo.Customer-tabel weergegeven.
2) Gebruik EXISTS en Join with SubQuery
Het meer realtime voorbeeld van EXISTS zou zijn wanneer we alle records uit de dbo.Customer-tabel willen vinden die overeenkomende CountryShortName uit de dbo.Country-tabel heeft.
SELECT * FROM dbo.Customer a WHERE EXISTS (SELECT 1 FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Merk op dat ik CountryShortName heb vergeleken van dbo.Customer en dbo.Country. Elke buitenste rij wordt vergeleken met subqueryresultaten en als deze overeenkomt, krijgen we de rij.
We kunnen de IN-clausule gebruiken voor dezelfde vereiste.
SELECT * FROM dbo.Customer a WHERE a.CountryShortName IN (SELECT b.CountryShortName FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Hoe EXISTS in SQL Server te gebruiken om overeenkomende records te retourneren - SQL Server / TSQL-zelfstudie |
Exists en Not Exits gebruiken in SQL Server