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

Come utilizzare l'operatore logico EXISTS in SQL Server - Tutorial SQL Server / TSQL Parte 125

Esiste restituisce TRUE se una sottoquery contiene righe. EXISTS viene utilizzato quando si desidera verificare l'esistenza di righe specificate da una sottoquery.

Creiamo dbo.Customer e dbo.Country Table e quindi utilizziamo EXISTS per restituire record per diversi scenari.

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 restituirà TRUE se la sottoquery contiene righe.

Esatto, se la nostra sottoquery restituirà delle righe e abbiamo utilizzato EXISTS, la query esterna restituirà tutte le righe.

Seleziona * da dbo.Customer
WHERE Exists ( Select 1)
 
 
Come utilizzare EXISTS in SQL Server - Tutorial SQL Server/TSQL

Ho notato che la nostra sottoquery è una query statica (Seleziona 1). Poiché la sottoquery ha restituito una riga ed EXISTS ha restituito TRUE, vengono visualizzati tutti i record dalla tabella dbo.Customer.

2) Usa EXISTS e unisciti con SubQuery
L'esempio più in tempo reale di EXISTS sarebbe quando vogliamo trovare tutti i record dalla tabella dbo.Customer che ha CountryShortName corrispondente dalla tabella dbo.Country.

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

Ho notato che ho confrontato CountryShortName da dbo.Customer e dbo.Country. Ogni riga esterna verrà confrontata con i risultati della sottoquery e, se corrisponde a , otteniamo la riga.

Possiamo utilizzare la clausola IN per lo stesso requisito.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
Come utilizzare EXISTS in SQL Server per restituire record corrispondenti - Tutorial SQL Server/TSQL
 

Come utilizzare esiste e non esce in SQL Server