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 © 2016   1keydata.com   Todos os direitos reservados.