Resumen :en este tutorial, aprenderá a usar SQLite EXISTS
operador para probar la existencia de filas devueltas por una subconsulta.
Introducción a SQLite EXISTS
operador
El EXISTS
operator es un operador lógico que comprueba si una subconsulta devuelve alguna fila.
Esta es la sintaxis básica de EXISTS
operador:
EXISTS(subquery)
Code language: SQL (Structured Query Language) (sql)
En esta sintaxis, la subconsulta es SELECT
instrucción que devuelve cero o más filas.
Si la subconsulta devuelve una o más filas, EXISTS
el operador devuelve verdadero. De lo contrario, EXISTS
el operador devuelve falso o NULL
.
Tenga en cuenta que si la subconsulta devuelve una fila con NULL
, el resultado de EXISTS
operador sigue siendo verdadero porque el conjunto de resultados contiene una fila con NULL.
Para negar el EXISTS
operador, utiliza el NOT EXISTS
operador de la siguiente manera:
NOT EXISTS (subquery)
Code language: SQL (Structured Query Language) (sql)
El NOT EXISTS
operador devuelve verdadero si la subconsulta no devuelve ninguna fila.
SQLite EXISTS
ejemplo de operador
Ver los siguientes Customers
y Invoices
tablas de la base de datos de ejemplo:

La siguiente declaración encuentra clientes que tienen facturas:
SELECT
CustomerId,
FirstName,
LastName,
Company
FROM
Customers c
WHERE
EXISTS (
SELECT
1
FROM
Invoices
WHERE
CustomerId = c.CustomerId
)
ORDER BY
FirstName,
LastName;
Code language: SQL (Structured Query Language) (sql)
La siguiente imagen muestra el conjunto de resultados parciales:

En este ejemplo, para cada cliente, EXISTS
el operador verifica si la identificación del cliente existe en las invoices
mesa.
- En caso afirmativo, la subconsulta devuelve una fila con el valor 1 que provoca el
EXISTS
operador evalúa a verdadero. Por lo tanto, la consulta incluye el cliente en el conjunto de resultados. - En caso de que la identificación del cliente no exista en las
Invoices
tabla, la subconsulta no devuelve filas, lo que hace queEXISTS
operador para evaluar a falso, por lo tanto, la consulta no incluye al cliente en el conjunto de resultados.
Tenga en cuenta que puede usar el IN
operador en lugar de EXISTS
operador en este caso para lograr el mismo resultado:
SELECT
CustomerId,
FirstName,
LastName,
Company
FROM
Customers c
WHERE
CustomerId IN (
SELECT
CustomerId
FROM
Invoices
)
ORDER BY
FirstName,
LastName;
Code language: SQL (Structured Query Language) (sql)
Una vez que la subconsulta devuelve la primera fila, EXISTS
El operador deja de buscar porque puede determinar el resultado. Por otro lado, el IN
el operador debe escanear todas las filas devueltas por la subconsulta para determinar el resultado.
En términos generales, el EXISTS
el operador es más rápido que IN
operador si el conjunto de resultados devuelto por la subconsulta es grande. Por el contrario, el IN
el operador es más rápido que EXISTS
operador si el conjunto de resultados devuelto por la subconsulta es pequeño.
SQLite NOT EXISTS
ejemplo de operador
Consulte la siguiente tabla de artistas y álbumes de la base de datos de ejemplo:

Esta consulta encuentra todos los artistas que no tienen ningún álbum en la tabla de álbumes:
SELECT
*
FROM
Artists a
WHERE
NOT EXISTS(
SELECT
1
FROM
Albums
WHERE
ArtistId = a.ArtistId
)
ORDER BY Name;
Code language: SQL (Structured Query Language) (sql)
Aquí está la salida parcial:

En este tutorial, ha aprendido a usar SQLite EXISTS
operador para probar la existencia de filas devueltas por una subconsulta.