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_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999

Tabela Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San 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 © 2013   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