Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да използвате логически оператор EXISTS в SQL Server - SQL Server / TSQL урок, част 125

Exists връща TRUE, ако подзаявка съдържа редове. EXISTS се използва, когато искаме да тестваме за съществуването на редове, посочени от подзаявка.

Нека създадем dbo.Customer и dbo.Country Table и след това използваме EXISTS за връщане на записи за различни сценарии.

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 ще върне TRUE, ако подзаявката съдържа редове.

Точно така, ако нашата подзаявка ще върне някакви редове и сме използвали EXISTS, външната заявка ще върне всички редове.

Изберете * от dbo.Customer
WHERE Exists ( Select 1)
 
 
Как да използвате EXISTS в SQL Server - SQL Server / TSQL урок

Забелязахме, че нашата подзаявка е статична заявка ( Изберете 1). Тъй като подзаявката върна ред и EXISTS върна TRUE, така че всички записи от таблицата dbo.Customer се показват.

2) Използвайте EXISTS и Join с SubQuery
По-добрият пример в реално време за EXISTS би бил, когато искаме да намерим всички записи от таблицата dbo.Customer, която има съвпадение на CountryShortName от dbo.Country Table.

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

Забелязах, че сравних CountryShortName от dbo.Customer и dbo.Country. Всеки външен ред ще бъде сравнен с резултатите от подзаявката и ако съвпада, тогава получаваме реда.

Можем да използваме клаузата IN за същото изискване.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
Как да използвате EXISTS в SQL Server за връщане на съвпадащи записи - SQL Server / TSQL урок
 

Как да използвате Exists и Not Exits в SQL Server
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Персонализирано форматиране на дата/час в SQL Server

  2. Конкатна стойност на полето към низ в SQL Server

  3. Добавете отместване на часовата зона към стойност datetime2 в SQL Server (T-SQL)

  4. Мигриране на база данни на Microsoft Access към SQL Server

  5. Как да възстановите база данни на SQL Server на Mac с помощта на SQL Operations Studio