INTERSEÇÃO MySQL

Resumo : neste tutorial, você aprenderá sobre o INTERSECToperador MySQL e como usá-lo para encontrar as linhas comuns de múltiplas consultas.

Observe que o MySQL suporta INTERSECT operador no MySQL 8.0.31.

Introdução ao operador MySQL INTERSECT

O INTERSECToperador é um operador de conjunto que retorna as linhas comuns de duas ou mais consultas.

Aqui está a sintaxe do INTERSECToperador:

query1
INTERSECT [ALL | DISTINCT]
query2;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O INTERSECToperador compara os conjuntos de resultados de duas consultas e retorna as linhas comuns.

Para usar o INTERSECToperador para as consultas, siga estas regras:

  1. A ordem e o número de colunas na lista de seleção das consultas devem ser iguais.
  2. Os tipos de dados das colunas correspondentes devem ser compatíveis.

O INTERSECToperador usa o DISTINCTpor padrão. Isso significa que DISTINCTremove duplicatas de ambos os lados da interseção. Se quiser reter duplicatas, especifique explicitamente a ALLopção.

O diagrama a seguir ilustra o INTERSECToperador.

INTERSEÇÃO MySQL

Neste diagrama, a consulta à esquerda produz um conjunto de resultados de (1,2,3) e a consulta à direita retorna um conjunto de resultados de (2,3,4). O INTERSECToperador retorna as linhas comuns, que neste caso são (2,3).

Ao contrário do UNIONoperador, que combina as linhas de duas consultas, o INTERSECToperador retorna as linhas comuns entre as consultas.

Exemplos de operadores MySQL INTERSECT

Vejamos um exemplo de uso do INTERSECToperador.

Configurando tabelas de amostra

Primeiro, crie tabelas t1 e t2e insira dados em ambas as tabelas:

CREATE TABLE t1 (
    id INT PRIMARY KEY
);

CREATE TABLE t2 LIKE t1;

INSERT INTO t1(id) VALUES(1),(2),(3);

INSERT INTO t2(id) VALUES(2),(3),(4);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, consulte os dados da t1tabela:

SELECT id FROM t1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+----+
| identificação |
+----+
| 1 |
| 2 |
| 3 |
+----+

Terceiro, consulte os dados da t2tabela:

SELECT id FROM t2;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+----+
| identificação |
+----+
| 2 |
| 3 |
| 4 |
+----+

1) Exemplo do operador MySQL INTERSECT

O exemplo a seguir usa o INTERSECToperador para obter um conjunto de resultados que contém as linhas comuns às t1tabelas e t2:

SELECT id FROM t1
INTERSECT
SELECT id FROM t2;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
+----+
| identificação |
+----+
| 2 |
| 3 |
+----+

A consulta é equivalente à seguinte consulta que usa DISTINCTexplicitamente:

SELECT id FROM t1
INTERSECT DISTINCT
SELECT id FROM t2;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

2) Um exemplo prático do MySQL INTERSECT

Usaremos as tabelas customerse employeesdo banco de dados de exemplo para a demonstração:

A consulta a seguir usa o INTERSECToperador para localizar os nomes comuns de clientes e funcionários:

SELECT 
    firstName
FROM
    employees 
INTERSECT
SELECT 
    contactFirstname
FROM
    customers;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+
| firstName |
+-----------+
| Mary      |
| Jeff      |
| William   |
| Leslie    |
| Julie     |
| Steve     |
| Peter     |
| Martín    |
+-----------+

3) Usando o operador INTERSECT com cláusula ORDER BY

Para classificar o conjunto de resultados retornado pelo INTERSECToperador, você usa a ORDER BYcláusula. O MySQL usa as colunas da primeira consulta como o nome da coluna do conjunto de resultados.

Por exemplo, a consulta a seguir usa o INTERSECToperador para localizar os nomes comuns de funcionários e clientes e classificá-los em ordem crescente:

SELECT 
    firstName
FROM
    employees 
INTERSECT
SELECT 
    contactFirstname
FROM
    customers
ORDER BY firstName;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+
| firstName |
+-----------+
| Jeff      |
| Julie     |
| Leslie    |
| Martín    |
| Mary      |
| Peter     |
| Steve     |
| William   |
+-----------+

4) Usando o operador INTERSECT com exemplo de opção ALL

O exemplo a seguir usa o INTERSECToperador com a ALLopção que localiza os nomes comuns de funcionários e clientes e retém as duplicatas:

SELECT 
    firstName
FROM
    employees 
INTERSECT ALL
SELECT 
    contactFirstname
FROM
    customers
ORDER BY firstName;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+
| firstName |
+-----------+
| Jeff      |
| Julie     |
| Leslie    |
| Leslie    |
| Martín    |
| Mary      |
| Peter     |
| Steve     |
| William   |
+-----------+

Resumo

  • Use o operador MySQL INTERSECTpara localizar as linhas que são comuns a vários resultados de consulta.
  • Use INTERSECT DISTINCTpara remover as duplicatas dos conjuntos de resultados e INTERSECT ALLretê-las.
  • O INTERSECToperador usa DISTINCTpor padrão.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *