sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo usar el operador lógico EXISTS en SQL Server - Tutorial de SQL Server / TSQL Parte 125

Existe devuelve VERDADERO si una subconsulta contiene filas. EXISTS se usa cuando queremos probar la existencia de filas especificadas por una subconsulta.

Creemos dbo.Customer y dbo.Country Table y luego use EXISTS para devolver registros para diferentes escenarios.

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 devolverá TRUE si la subconsulta contiene filas.

Así es, si nuestra subconsulta devolverá filas y hemos utilizado EXISTS, la consulta externa devolverá todas las filas.

Seleccione * de dbo.Customer
WHERE Exists ( Select 1)
 
 
Cómo usar EXISTS en SQL Server - Tutorial de SQL Server / TSQL

Notó que nuestra subconsulta es una consulta estática (Seleccione 1). Como la subconsulta devolvió la fila y EXISTS devolvió VERDADERO, se muestran todos los registros de la tabla dbo.Customer.

2) Use EXISTS y únase con SubQuery
El ejemplo más en tiempo real de EXISTS sería cuando queremos encontrar todos los registros de la tabla dbo.Customer que coincide con CountryShortName de la tabla dbo.Country.

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

Noté que comparé CountryShortName de dbo.Customer y dbo.Country. Cada fila exterior se comparará con los resultados de la subconsulta y, si coincide, obtenemos la fila.

Podemos usar la cláusula IN para el mismo requisito.

SELECT *
FROM dbo.Customer a
WHERE a.CountryShortName IN
    (SELECT b.CountryShortName
     FROM dbo.Country b
     WHERE a.CountryShortName=b.CountryShortName)
 
Cómo usar EXISTS en SQL Server para devolver registros coincidentes - Tutorial de SQL Server / TSQL
 

Cómo utilizar Exists y Not Exits en SQL Server