Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment utiliser l'opérateur logique EXISTS dans SQL Server - Tutoriel SQL Server / TSQL Partie 125

Existe renvoie TRUE si une sous-requête contient des lignes. EXISTS est utilisé lorsque nous voulons tester l'existence de lignes spécifiées par une sous-requête.

Créons dbo.Customer et dbo.Country Table, puis utilisons EXISTS pour renvoyer des enregistrements pour différents scénarios.

Créer la table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), Age tinyint)GOinsert into dbo.CustomerValues ​​(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','NOUS',33),(8,'Dita','M','NOUS',15),(9,'Adita','M','NOUS', 29)Créer la table dbo.Country ( CId tinyint,CountryName VARCHAR(50),CountryShortName CHAR(2))goInsert into dbo.Country Values ​​(1,'Pakistan','Pk'),(2,'United States of America' ,'US')


1) EXISTS renverra TRUE si la sous-requête contient des lignes.

C'est exact, si notre sous-requête renverra des lignes et que nous avons utilisé EXISTS, la requête externe renverra toutes les lignes.

Sélectionnez * dans dbo.Customer
Où existe (sélectionnez 1)
 
 
Comment utiliser EXISTS dans SQL Server - Tutoriel SQL Server / TSQL

Remarqué que notre sous-requête est une requête statique (Sélectionnez 1). Comme la sous-requête a renvoyé la ligne et EXISTS a renvoyé TRUE, tous les enregistrements de la table dbo.Customer sont affichés.

2) Utilisez EXISTS et Join with SubQuery
L'exemple le plus en temps réel d'EXISTS serait lorsque nous voulons trouver tous les enregistrements de la table dbo.Customer qui correspondent à CountryShortName de dbo.Country Table.

SELECT *FROM dbo.Customer aWHERE EXISTS (SELECT 1 FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)

J'ai remarqué que j'ai comparé CountryShortName de dbo.Customer et dbo.Country. Chaque ligne externe sera comparée aux résultats de la sous-requête et si elle correspond, nous obtenons la ligne.

Nous pouvons utiliser la clause IN pour la même exigence.

 SELECT *FROM dbo.Customer aWHERE a.CountryShortName IN (SELECT b.CountryShortName FROM dbo.Country b WHERE a.CountryShortName=b.CountryShortName)
 
Comment utiliser EXISTS dans SQL Server pour renvoyer les enregistrements correspondants – Tutoriel SQL Server/TSQL
 

Comment utiliser Exists et Not Exits dans SQL Server