PostgreSQL: usando a cláusula onde existe
quando qualquer consulta SQL é usada dentro de outra consulta SQL então ela é chamada de uma sub-pesquisa. A consulta complicada pode ser escrita facilmente dividindo uma consulta grande em várias subqueries. Existe cláusula é usada com um subquery em uma declaração SQL. A saída de existe depende do número de registros retornados pela subquery, mas não depende dos valores dos registros. O resultado da EXISTS será verdadeiro se a subquery associada retorna pelo menos uma linha. Como você pode usar existe e não existe cláusula em Selecionar, Inserir, atualizar e excluir as declarações são mostradas neste tutorial usando diferentes exemplos.
existe a sintaxe da Cláusula:
de table_name1
onde existe (seleccionar 1
de
table_name2
onde col1 = table_name1.col1);
criar três tabelas nomeadas empresa, itens e clientes e inserir alguns dados. Execute a seguinte pesquisa selecionada para mostrar o conteúdo destas tabelas.
SELECT * from items;
SELECT * from clientes;
Exemplo-1: Usando EXISTE cláusula em consulta SELECT
(a) EXISTE
a consulta A seguir irá recuperar os registros da tabela de itens com base na tabela da empresa. A subquery procura todos os registos da tabela da empresa onde o company_id da tabela da empresa é igual ao company_id da tabela de itens e o valor do campo de telefone não está vazio. Há um registro na tabela da empresa que não tem número de telefone e este registro será omitido da saída.
dos itens
onde existir (selecione 1
da empresa
onde houver itens.company_id = company.companhia e companhia.telefone<>”);
saída:
o registo da LG não tem entrada telefónica na tabela da empresa. Então não aparece na saída.
(b) não existe
a cláusula é contrária à cláusula existe. A seguinte consulta irá recuperar esses registros da tabela de itens quando o subquery retorna falso.
dos itens
onde não exista (selecione 1
da empresa
onde os itens.company_id = company.companhia e companhia.a_ fonte web é nula);
saída:
não existe nenhum registo na tabela da empresa onde o website_url é nulo. Assim, a saída de subquery é falsa para todos os registros e todos os registros da tabela de itens são recuperados.
Exemplo-2: Usando a cláusula existe na INSERT query
de acordo com a seguinte consulta insert, os dados serão inseridos na tabela de itens quando as tabelas company_id de ambas as empresas e clientes são iguais.
(ID da empresa)
seleccionar a ID da empresa
a partir de clientes
quando existir (seleccionar 1
da empresa, clientes
quando houver clientes.company_id = company.company_id);
saída:
há três entradas para company_id na tabela de clientes com os valores são 1 e 2. Então o subquery vai voltar verdadeiro por três vezes e três registros serão inseridos.
execute a pesquisa selecione para verificar o conteúdo da tabela de itens.
Exemplo-3: Usando EXISTE cláusula em consulta ATUALIZAÇÃO
a consulta A seguir irá atualizar os registros da tabela de itens, onde company_id é 1 e a subconsulta retorna true.
SET name=’Nokia’
WHERE company_id=1 and EXISTS (SELECT 1
FROM items
WHERE name = ‘Not assigned’);
resultado:
aqui, o subquery retornará verdadeiro por três vezes e company_id é 1 por três registros. Três registros serão atualizados após a execução da consulta de atualização.
execute a pesquisa selecione para verificar o conteúdo da tabela de itens.
exemplo-4: Se usar a cláusula existe na consulta DELETE
a seguinte consulta irá apagar os registos da tabela de itens onde o company_id é 1 e a subquery devolve verdadeiro.
ONDE company_id=1 e EXISTS (SELECT 1
a PARTIR de itens
WHERE nome=’Não Atribuir’);
Saída:
Existem três registos com valor 1 de company_id e um registro de nome de valor ‘Não Atribuir’. Então, a condição será verdadeira por três vezes e excluir três registros da tabela de itens.
execute a pesquisa selecione para verificar o conteúdo da tabela de itens.
Hope, você tem uma idéia clara de usar a cláusula existe na consulta SQL depois de ler este tutorial.