Lad os oprette dbo.Customer og dbo.Country Table og derefter bruge EXISTS til at returnere poster for forskellige scenarier.
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 returnerer TRUE, hvis underforespørgslen indeholder rækker.
Det er rigtigt, hvis vores underforespørgsel vil returnere nogle rækker, og vi har brugt EXISTS, vil den ydre forespørgsel returnere alle rækker.
Vælg * fra dbo.Customer
WHERE Exists ( Select 1)
Sådan bruges EXISTS i SQL Server - SQL Server / TSQL Tutorial |
Bemærket, at vores underforespørgsel er statisk forespørgsel (Vælg 1). Som underforespørgsel returnerede rækken og EXISTS returnerede TRUE, så alle poster fra dbo.Customer table vises.
2) Brug EXISTS og Join with SubQuery
Det mere realtidseksempel på EXISTS ville være, når vi ønsker at finde alle posterne fra dbo.Customer-tabellen, som har matchende CountryShortName fra dbo.Country-tabellen.
SELECT * FROM dbo.Customer a WHERE EXISTS (SELECT 1 FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Merket til, at jeg har sammenlignet CountryShortName fra dbo.Customer og dbo.Country. Hver ydre række vil blive sammenlignet med underforespørgselsresultater, og hvis matcher, får vi rækken.
Vi kan bruge IN-sætningen til samme krav.
SELECT * FROM dbo.Customer a WHERE a.CountryShortName IN (SELECT b.CountryShortName FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Sådan bruges EXISTS i SQL Server til at returnere matchende poster - SQL Server / TSQL Tutorial |
Sådan bruges Exists and Not Exits i SQL Server