Utwórzmy tabele dbo.Customer i dbo.Country, a następnie użyjmy funkcji EXISTS do zwrócenia rekordów dla różnych scenariuszy.
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 zwróci TRUE, jeśli podzapytanie zawiera jakiekolwiek wiersze.
Zgadza się, jeśli nasze podzapytanie zwróci jakiekolwiek wiersze, a użyliśmy opcji EXISTS, zewnętrzne zapytanie zwróci wszystkie wiersze.
Wybierz * z dbo.Klient
WHERE Exists ( Select 1)
Jak używać EXISTS w SQL Server - Samouczek SQL Server / TSQL |
Zauważyliśmy, że nasze podzapytanie jest zapytaniem statycznym ( Wybierz 1). Ponieważ podzapytanie zwróciło wiersz, a EXISTS zwróciło TRUE, więc wyświetlane są wszystkie rekordy z tabeli dbo.Customer.
2) Użyj opcji EXISTS i Join with SubQuery
Bardziej rzeczywistym przykładem EXISTS jest sytuacja, w której chcemy znaleźć wszystkie rekordy z tabeli dbo.Customer, która ma pasującą nazwę CountryShortName z tabeli dbo.Country.
SELECT * FROM dbo.Customer a WHERE EXISTS (SELECT 1 FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Zauważyłem, że porównałem CountryShortName z dbo.Customer i dbo.Country. Każdy zewnętrzny wiersz będzie porównywany z wynikami podzapytania i jeśli pasuje , otrzymujemy wiersz.
Możemy użyć klauzuli IN dla tego samego wymagania.
SELECT * FROM dbo.Customer a WHERE a.CountryShortName IN (SELECT b.CountryShortName FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
Jak używać EXISTS w SQL Server do zwracania pasujących rekordów - SQL Server / samouczek TSQL |
Jak używać Exists i Not Exits w SQL Server