Intersect

Em PostgreSQL, a cláusula INTERSECT é usada para encontrar as linhas comuns (interseção) entre os resultados de duas ou mais consultas. Ela retorna apenas as linhas que aparecem em todos os conjuntos de resultados das consultas. Assim como a cláusula UNION, as consultas dentro da cláusula INTERSECT devem ter o mesmo número de colunas e os tipos de dados correspondentes nas colunas devem ser compatíveis.

Sintaxe básica:

SELECT coluna1, coluna2, ...
FROM tabela1
WHERE condição
INTERSECT
SELECT coluna1, coluna2, ...
FROM tabela2
WHERE condição;

Neste exemplo, duas consultas são combinadas usando a cláusula INTERSECT. O conjunto de resultados conterá apenas as linhas que são retornadas pelas duas consultas.

Exemplo prático:

Suponha que você tenha duas tabelas chamadas clientes_antigos e clientes_novos, e você deseja obter uma lista de todos os clientes que estão presentes tanto na tabela clientes_antigos quanto na tabela clientes_novos:

SELECT nome, email
FROM clientes_antigos
INTERSECT
SELECT nome, email
FROM clientes_novos;

Esta consulta retornará apenas os clientes cujas informações de nome e e-mail estão presentes tanto na tabela clientes_antigos quanto na tabela clientes_novos.

Assim como com a cláusula UNION, lembre-se de que as consultas dentro da cláusula INTERSECT devem ter o mesmo número de colunas e os tipos de dados nas colunas correspondentes devem ser compatíveis.