SQL EXISTS




SQL > Linguagem SQL avançada > Exists

Na secção anterior, utilizamos IN para ligar a consulta interna e a consulta externa numa instrução subsequente. IN não é a única forma de fazê-lo -- é possível utilizar muitos operadores como >, <, ou =. EXISTS é um operador especial que será abordado nesta secção.

EXISTS simplesmente testa se a consulta interna apresenta qualquer linha. Se apresentar, a consulta externa prossegue. Se não apresentar, a consulta externa não é executada e toda a instrução SQL não apresenta qualquer resultado.

A sintaxe de EXISTS é:

SELECT "nome_coluna1"
FROM "nome_tabela1"
WHERE EXISTS
(SELECT *
FROM "nome_tabela2"
WHERE "condição");

Note que em vez de *, pode selecionar uma ou mais colunas na consulta interna. O efeito será idêntico.

Vamos utilizar as mesmas tabelas como exemplo:

Tabela Store_Information
Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Tabela Geography
Region_NameStore_Name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

e emitimos a seguinte consulta SQL:

SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS
(SELECT * FROM Geography
WHERE Region_Name = 'West');

Iremos obter o seguinte resultado:

SUM(Sales)
2750

No início, isto pode parecer confuso porque a consulta secundária inclui a condição [region_name = 'West'], embora a consulta tenha somado as lojas de todas as regiões. Após uma inspecção mais atenta, descobrimos que como a consulta secundária apresenta mais de 0 linhas, a condição EXISTS é verdadeira e a condição existente na consulta interna não influencia a forma como a consulta externa é executada.

SQL CASE >>



Copyright © 2014   1keydata.com   Todos os direitos reservados.


SQL Avançados
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Subquery
SQL EXISTS
SQL CASE
SQL NULL
SQL ISNULL
SQL IFNULL
SQL NVL
SQL COALESCE
SQL NULLIF




Mapa do site