Creiamo dbo.Customer e dbo.Country Table e quindi utilizziamo EXISTS per restituire record per diversi scenari.
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 restituirà TRUE se la sottoquery contiene righe.
Esatto, se la nostra sottoquery restituirà delle righe e abbiamo utilizzato EXISTS, la query esterna restituirà tutte le righe.
Seleziona * da dbo.Customer
WHERE Exists ( Select 1)
Come utilizzare EXISTS in SQL Server - Tutorial SQL Server/TSQL |
Ho notato che la nostra sottoquery è una query statica (Seleziona 1). Poiché la sottoquery ha restituito una riga ed EXISTS ha restituito TRUE, vengono visualizzati tutti i record dalla tabella dbo.Customer.
2) Usa EXISTS e unisciti con SubQuery
L'esempio più in tempo reale di EXISTS sarebbe quando vogliamo trovare tutti i record dalla tabella dbo.Customer che ha CountryShortName corrispondente dalla tabella dbo.Country.
SELECT * FROM dbo.Customer a WHERE EXISTS (SELECT 1 FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Ho notato che ho confrontato CountryShortName da dbo.Customer e dbo.Country. Ogni riga esterna verrà confrontata con i risultati della sottoquery e, se corrisponde a , otteniamo la riga.
Possiamo utilizzare la clausola IN per lo stesso requisito.
SELECT * FROM dbo.Customer a WHERE a.CountryShortName IN (SELECT b.CountryShortName FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Come utilizzare EXISTS in SQL Server per restituire record corrispondenti - Tutorial SQL Server/TSQL |
Come utilizzare esiste e non esce in SQL Server