Oracle / PLSQL: Operador MINUS

Descrição

O operador Oracle MINUS é usado para retornar todas as linhas na primeira instrução SELECT que não são retornadas pela segunda instrução SELECT. Cada instrução SELECT definirá um conjunto de dados. O operador MINUS recuperará todos os registros do primeiro conjunto de dados e, em seguida, removerá dos resultados todos os registros do segundo conjunto de dados.

Sintaxe

A sintaxe do operador MINUS no Oracle/PLSQL é:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
MINUS
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

 

Parametros or Argumentos

expression1, expression2, ... expression_n

Contém as colunas ou cálculos que você deseja processar e apresentar.

 

TABLES

São as tabelas das quais você deseja recuperar registros. Deve haver pelo menos uma tabela listada na cláusula FROM.

WHERE(Cláusula)

A Cláusula WHERE é Opcional. As condições que devem ser atendidas para que os registros sejam selecionados.

 

Nota

  • Deve haver o mesmo número de expressões e o mesmo tipos de dados em ambas as instruções SELECT.

 

Exemplo - Com expressão única

A seguir está um exemplo de operador Oracle MINUS que retorna um campo com o mesmo tipo de dados:
SELECT supplier_id
FROM suppliers
MINUS
SELECT supplier_id
FROM orders;

Este exemplo Oracle MINUS retorna todos os valores de Supplier_id que estão na tabela de fornecedores e não na tabela de pedidos. O que isso significa é que se um valor de ID de fornecedor existisse na tabela de fornecedores e também existisse na tabela de pedidos, o valor de ID de fornecedor não apareceria neste conjunto de resultados.

 

Exemplo - Usando ORDER BY

A seguir está um exemplo de operador MINUS que usa uma cláusula ORDER BY:

SELECT supplier_id, supplier_name
FROM suppliers
WHERE state = 'Florida'
MINUS
SELECT company_id, company_name
FROM companies
WHERE company_id <= 400
ORDER BY 2;

Neste exemplo MINUS, como os nomes das colunas são diferentes entre as duas instruções SELECT, é mais vantajoso referenciar as colunas na cláusula ORDER BY pela sua posição no conjunto de resultados. Neste exemplo, classificamos os resultados por nome_do_fornecedor/nome_da_empresa em ordem crescente, conforme indicado por ORDER BY 2.

Os campos nome_do_fornecedor / nome_da_empresa estão na posição 2 no conjunto de resultados.

 

Data de Publicação: 13-10-2023

Categoria: PL/SQL