Resumo :neste tutorial, você aprenderá como usar o SQLite
EXISTS operador para testar a existência de linhas retornadas por uma subconsulta. Introdução ao SQLite EXISTS operador
O
EXISTS operador é um operador lógico que verifica se uma subconsulta retorna alguma linha. Aqui está a sintaxe básica do
EXISTS operador:EXISTS(subquery)
Code language: SQL (Structured Query Language) (sql) Nesta sintaxe, a subconsulta é um
SELECT instrução que retorna zero ou mais linhas. Se a subconsulta retornar uma ou mais linhas, o
EXISTS operador retorna verdadeiro. Caso contrário, o EXISTS operador retorna falso ou NULL . Observe que se a subconsulta retornar uma linha com
NULL , o resultado do EXISTS O operador ainda é verdadeiro porque o conjunto de resultados contém uma linha com NULL. Para negar o
EXISTS operador, você usa o NOT EXISTS operador da seguinte forma:NOT EXISTS (subquery)Code language: SQL (Structured Query Language) (sql) O
NOT EXISTS operador retorna true se a subconsulta não retornar nenhuma linha. SQLite EXISTS exemplo de operador
Veja os seguintes
Customers e Invoices tabelas do banco de dados de exemplo:
A instrução a seguir encontra clientes que têm faturas:
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) A imagem a seguir mostra o conjunto de resultados parcial:
Neste exemplo, para cada cliente, o
EXISTS operador verifica se o ID do cliente existe nas invoices tabela. - Se sim, a subconsulta retorna uma linha com valor 1 que faz com que
EXISTSoperador avaliar como verdadeiro. Portanto, a consulta inclui o cliente no conjunto de resultados. - Caso o ID do cliente não exista nas
Invoicestabela, a subconsulta não retorna nenhuma linha, o que faz com que oEXISTSoperador para avaliar como falso, portanto, a consulta não inclui o cliente no conjunto de resultados.
Observe que você pode usar o
IN operador em vez de EXISTS operador neste caso para obter o mesmo 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) Assim que a subconsulta retornar a primeira linha, o
EXISTS operador pára de pesquisar porque pode determinar o resultado. Por outro lado, o IN O operador deve varrer todas as linhas retornadas pela subconsulta para determinar o resultado. De um modo geral, o
EXISTS operador é mais rápido que IN operador se o conjunto de resultados retornado pela subconsulta for grande. Por outro lado, o IN operador é mais rápido que o EXISTS operador se o conjunto de resultados retornado pela subconsulta for pequeno. SQLite NOT EXISTS exemplo de operador
Consulte a seguinte tabela de Artistas e Álbuns do banco de dados de exemplo:
Esta consulta encontra todos os artistas que não possuem nenhum álbum na tabela Álbuns:
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) Aqui está a saída parcial:
Neste tutorial, você aprendeu como usar o SQLite
EXISTS operador para testar a existência de linhas retornadas por uma subconsulta.