sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man använder EXISTS Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 125

Exists returnerar TRUE om en underfråga innehåller några rader. EXISTS används när vi vill testa förekomsten av rader specificerade av en underfråga.

Låt oss skapa dbo.Customer och dbo.Country Table och sedan använda EXISTS för att returnera poster för olika 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 returnerar TRUE om underfrågan innehåller några rader.

Det stämmer, om vår underfråga kommer att returnera några rader och vi har använt EXISTS, kommer den yttre frågan att returnera alla rader.

Välj * från dbo.Customer
WHERE Exists ( Select 1)
 
 
Hur man använder EXISTS i SQL Server - SQL Server / TSQL Tutorial

Merkte att vår underfråga är statisk fråga (Välj 1). Eftersom underfrågan returnerade rad och EXISTS returnerade TRUE så alla poster från dbo.Customer-tabellen visas.

2) Använd EXISTS och gå med i SubQuery
Det mer realtidsexemplet på EXISTS skulle vara när vi vill hitta alla poster från dbo.Customer-tabellen som har matchande CountryShortName från dbo.Country-tabellen.

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

Märde att jag har jämfört CountryShortName från dbo.Customer och dbo.Country. Varje yttre rad kommer att jämföras med resultat från underfrågan och om det matchar får vi raden.

Vi kan använda IN-satsen för samma krav.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
Hur man använder EXISTS i SQL Server för att returnera matchande poster - SQL Server / TSQL Tutorial
 

Hur man använder Exists and Not Exits i SQL Server
  1. ListView-kontroll med Ms-Access TreeView

  2. EF4 - Den valda lagrade proceduren returnerar inga kolumner

  3. SQL SERVER 2016 – Jämföra exekveringsplaner

  4. SQL Server Active Sessions and Status