sql >> Databáze >  >> RDS >> Sqlserver

Jak používat EXISTS Logical Operator v SQL Server - SQL Server / TSQL výukový program, část 125

Exists vrátí hodnotu TRUE, pokud poddotaz obsahuje nějaké řádky. EXISTS se používá, když chceme otestovat existenci řádků specifikovaných poddotazem.

Vytvořme tabulku dbo.Customer a dbo.Country a poté použijte EXISTS k vrácení záznamů pro různé scénáře.

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 vrátí hodnotu TRUE, pokud dílčí dotaz obsahuje nějaké řádky.

To je pravda, pokud náš poddotaz vrátí nějaké řádky a my jsme použili EXISTS, vnější dotaz vrátí všechny řádky.

Vyberte * z dbo.Customer
WHERE Exists ( Select 1)
 
 
Jak používat EXISTS v SQL Server – SQL Server / Výukový program TSQL

Všimli jsme si, že náš dílčí dotaz je statický dotaz (Vyberte 1). Protože poddotaz vrátil řádek a EXISTS vrátilo hodnotu TRUE, zobrazí se všechny záznamy z tabulky dbo.Customer.

2) Použijte EXISTS a Join with SubQuery
Příklad EXISTS v reálném čase by byl, kdybychom chtěli najít všechny záznamy z tabulky dbo.Customer, která má odpovídající CountryShortName z tabulky dbo.Country.

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

Všiml jsem si, že jsem porovnal CountryShortName z dbo.Customer a dbo.Country. Každý vnější řádek bude porovnán s výsledky poddotazu a pokud se shoduje, pak dostaneme řádek.

Pro stejný požadavek můžeme použít klauzuli IN.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
Jak používat EXISTS na serveru SQL k vrácení odpovídajících záznamů - SQL Server / Výukový program TSQL
 

Jak používat existuje a neukončuje na serveru SQL
  1. Vraťte den, měsíc a rok v MySQL

  2. SQL Server 2012 Service Pack 1 a kumulativní aktualizace 1

  3. Entity framework se velmi pomalu načítá poprvé po každé kompilaci

  4. Vlastní grafy pro monitorování vašich systémů MySQL, MariaDB, MongoDB a PostgreSQL – tipy a triky ClusterControl