PostgreSQL onde existe Query

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:

seleccionar col1, col2, col3 … .
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 company;
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.

selecione item_id, nome, quantidade
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.

selecione item_id, nome, quantidade
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.

inserir nos itens
(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.

UPDATE items
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.

EXCLUIR itens
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.

Deixe uma resposta

O seu endereço de email não será publicado.