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