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.