sql >> Database >  >> RDS >> Sqlserver

Hoe EXISTS Logical Operator te gebruiken in SQL Server - SQL Server / TSQL Tutorial Part 125

Bestaat geeft TRUE als resultaat als een subquery rijen bevat. EXISTS wordt gebruikt wanneer we willen testen op het bestaan ​​van rijen gespecificeerd door een subquery.

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
  1. bouw dynamische SQL-query's met psycopg2 python-bibliotheek en gebruik goede conversietools

  2. Best practices:.NET:Hoe kan ik PK retourneren tegen een Oracle-database?

  3. SQL Server-aanmeldingsfout:aanmelding mislukt voor gebruiker 'NT AUTHORITY\SYSTEM'

  4. MySQL NDB-cluster implementeren en beheren met ClusterControl