Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So verwenden Sie den logischen Operator EXISTS in SQL Server - SQL Server / TSQL-Tutorial Teil 125

Exists gibt TRUE zurück, wenn eine Unterabfrage Zeilen enthält. EXISTS wird verwendet, wenn wir testen möchten, ob Zeilen vorhanden sind, die von einer Unterabfrage angegeben werden.

Lassen Sie uns dbo.Customer- und dbo.Country-Tabellen erstellen und dann EXISTS verwenden, um Datensätze für verschiedene Szenarien zurückzugeben.

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 gibt TRUE zurück, wenn die Unterabfrage Zeilen enthält.

Das ist richtig, wenn unsere Unterabfrage irgendwelche Zeilen zurückgibt und wir EXISTS verwendet haben, wird die äußere Abfrage alle Zeilen zurückgeben.

Wählen Sie * aus dbo.Customer
WHERE Exists ( Select 1)
 
 
So verwenden Sie EXISTS in SQL Server - SQL Server / TSQL-Tutorial

Beachten Sie, dass unsere Unterabfrage eine statische Abfrage ist (Wählen Sie 1). Da die Unterabfrage Zeile zurückgegeben hat und EXISTS TRUE zurückgegeben hat, werden alle Datensätze aus der Tabelle dbo.Customer angezeigt.

2) Verwenden Sie EXISTS und Join with SubQuery
Das Echtzeitbeispiel für EXISTS wäre, wenn wir alle Datensätze aus der dbo.Customer-Tabelle finden möchten, die einen passenden CountryShortName aus der dbo.Country-Tabelle haben.

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

Bemerkt, dass ich CountryShortName von dbo.Customer und dbo.Country verglichen habe. Jede äußere Zeile wird mit den Ergebnissen der Unterabfrage verglichen, und wenn sie übereinstimmt, erhalten wir die Zeile.

Wir können die IN-Klausel für dieselbe Anforderung verwenden.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
So verwenden Sie EXISTS in SQL Server, um übereinstimmende Datensätze zurückzugeben - SQL Server / TSQL-Tutorial
 

So verwenden Sie „Exists“ und „Not Exits“ in SQL Server