MySQL MENOS

Resumo : neste tutorial você aprenderá sobre MINUSo operador SQL e como simular MINUSno MySQL usando join.

Observe que o MySQL oferece suporte ao EXCEPToperador a partir da versão 8.0.31. O EXCEPToperador é equivalente ao MINUSoperador. Se estiver usando uma versão inferior, você pode consultar este tutorial para emular o MINUSoperador.

Introdução ao operador SQL MINUS

O MINUSoperador é um dos três operadores definidos no padrão SQL que inclui UNION, INTERSECTe MINUS.

Compara MINUSos resultados de duas consultas e retorna as linhas do conjunto de resultados da primeira consulta que não aparecem no conjunto de resultados da segunda consulta.

O seguinte ilustra a sintaxe do MINUSoperador:

SELECT select_list1 
FROM table_name1
MINUS 
SELECT select_list2 
FROM table_name2;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

As regras básicas para consultas que utilizam o MINUSoperador são as seguintes:

  • O número e a ordem das colunas em ambos select_list1e select_list2devem ser iguais.
  • Os tipos de dados das colunas correspondentes em ambas as consultas devem ser compatíveis.

Suponha que temos duas tabelas t1e t2com a seguinte estrutura e dados:

CREATE TABLE t1 (
    id INT PRIMARY KEY
);

CREATE TABLE t2 (
    id INT PRIMARY KEY
);

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

A consulta a seguir retorna valores distintos da consulta da t1tabela que não são encontrados no resultado da consulta da t2tabela.

SELECT id FROM t1
MINUS
SELECT id FROM t2; Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo MySQL MENOS

O seguinte diagrama de Venn ilustra a MINUSoperação:

Ilustração do operador MySQL MENOS

Infelizmente, o MySQL não oferece suporte MINUSao operador na versão anterior 8.0.31. No entanto, você pode usar join para emulá-lo.

Emulação de operador MySQL MINUS

Para emular MINUSduas consultas, você usa a seguinte sintaxe:

SELECT 
    select_list
FROM 
    table1
LEFT JOIN table2 
    ON join_predicate
WHERE 
    table2.column_name IS NULL; Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por exemplo, a consulta a seguir usa a LEFT JOINcláusula para retornar o mesmo resultado que o MINUSoperador:

SELECT 
    id
FROM
    t1
LEFT JOIN
    t2 USING (id)
WHERE
    t2.id IS NULL;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste tutorial, você aprendeu sobre o operador SQL MINUS e como emular o operador MINUS no MySQL usando LEFT JOINa cláusula.

Deixe um comentário

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