No Oracle Database, o
MINUS O operador é usado para retornar apenas linhas exclusivas retornadas pela primeira consulta, mas não pela segunda. Exemplo
Suponha que temos as seguintes tabelas:
SELECT * FROM Teachers;
SELECT * FROM Students; Resultado:
| ID DO PROFESSOR | NOME DO PROFESSOR |
|---|---|
| 1 | Warren |
| 2 | Ben |
| 3 | Cathy |
| 4 | Cathy |
| 5 | Faturar |
| 6 | Faturar |
| ESTUDANTE | NOME DO ALUNO |
|---|---|
| 1 | Faye |
| 2 | Jato |
| 3 | Ponto |
| 4 | Ein |
| 5 | Warren |
| 6 | Faturar |
Podemos usar o
MINUS operador para devolver professores que não são também alunos:SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students; Resultado:
| NOME DO PROFESSOR |
|---|
| Ben |
| Cathy |
Portanto, só obtemos valores que aparecem no
Teachers tabela que também não aparece em Students tabela. Podemos obter resultados diferentes, dependendo de qual tabela está à esquerda e qual está à direita. Aqui está um exemplo que coloca o
Students tabela à esquerda e Teachers a direita:SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers; Resultado:
| NOME DO ALUNO |
|---|
| Ein |
| Faye |
| Jato |
| Ponto |
Desta vez, temos alunos que também não são professores.
O
MINUS operador retorna apenas linhas distintas. Portanto, em nosso exemplo, apenas uma linha é retornada para Cathy , embora existam dois professores com esse nome. Uma alternativa
É possível obter o mesmo resultado sem usar o
MINUS operador. Por exemplo, poderíamos reescrever nosso primeiro exemplo para isso:SELECT
DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName); Resultado:
| NOME DO PROFESSOR |
|---|
| Ben |
| Cathy |
MINUS Equivalentes em outros RDBMSs
MINUS da Oracle operador é semelhante ao EXCEPT operador que muitos outros RDBMSs usam. MariaDB tem um EXCEPT operador, mas também introduziu um MINUS operador como sinônimo que pode ser usado no modo Oracle.