Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak używać operatora logicznego EXISTS w SQL Server — samouczek SQL Server / TSQL — część 125

Exists zwraca TRUE, jeśli podzapytanie zawiera jakiekolwiek wiersze. EXISTS jest używane, gdy chcemy przetestować istnienie wierszy określonych przez podzapytanie.

Utwórzmy tabele dbo.Customer i dbo.Country, a następnie użyjmy funkcji EXISTS do zwrócenia rekordów dla różnych scenariuszy.

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 zwróci TRUE, jeśli podzapytanie zawiera jakiekolwiek wiersze.

Zgadza się, jeśli nasze podzapytanie zwróci jakiekolwiek wiersze, a użyliśmy opcji EXISTS, zewnętrzne zapytanie zwróci wszystkie wiersze.

Wybierz * z dbo.Klient
WHERE Exists ( Select 1)
 
 
Jak używać EXISTS w SQL Server - Samouczek SQL Server / TSQL

Zauważyliśmy, że nasze podzapytanie jest zapytaniem statycznym ( Wybierz 1). Ponieważ podzapytanie zwróciło wiersz, a EXISTS zwróciło TRUE, więc wyświetlane są wszystkie rekordy z tabeli dbo.Customer.

2) Użyj opcji EXISTS i Join with SubQuery
Bardziej rzeczywistym przykładem EXISTS jest sytuacja, w której chcemy znaleźć wszystkie rekordy z tabeli dbo.Customer, która ma pasującą nazwę CountryShortName z tabeli dbo.Country.

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

Zauważyłem, że porównałem CountryShortName z dbo.Customer i dbo.Country. Każdy zewnętrzny wiersz będzie porównywany z wynikami podzapytania i jeśli pasuje , otrzymujemy wiersz.

Możemy użyć klauzuli IN dla tego samego wymagania.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
Jak używać EXISTS w SQL Server do zwracania pasujących rekordów - SQL Server / samouczek TSQL
 

Jak używać Exists i Not Exits w 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. Czy mogę użyć strumienia, aby WSTAWIĆ lub UAKTUALNIĆ wiersz w programie SQL Server (C#)?

  2. SQL Server 2016:Wstaw dane

  3. Czym jest BETWEEN operator logiczny w SQL Server — samouczek SQL Server / TSQL część 124

  4. SQL Pivot z wieloma kolumnami

  5. Jak sprawdzić, czy procedura składowana istnieje przed jej utworzeniem?