sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan bruges EXISTS Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 125

Exists returnerer TRUE, hvis en underforespørgsel indeholder nogle rækker. EXISTS bruges, når vi vil teste for eksistensen af ​​rækker specificeret af en underforespørgsel.

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
  1. Find 2. højeste løn bedst mulige måder

  2. MySQL IN-operatørens ydeevne på (stort?) antal værdier

  3. Sådan forbedres MySQL AWS-ydeevne 2X over Amazon RDS til samme pris

  4. PostgreSQL:IKKE IN versus UNDTAGET ydelsesforskel (redigeret #2)