sql >> Databasteknik >  >> RDS >> Oracle

Oracle MINUS Operatör förklaras

I Oracle Database, MINUS operatorn används för att endast returnera unika rader som returneras av den första frågan men inte av den andra.

Exempel

Anta att vi har följande tabeller:

SELECT * FROM Teachers;
SELECT * FROM Students;

Resultat:

LÄRARID LÄRARNAMN
1 Warren
2 Ben
3 Cathy
4 Cathy
5 Fakta
6 Fakta
STUDENTID STUDENTNAME
1 Faye
2 Jet
3 Spike
4 Ein
5 Warren
6 Fakta

Vi kan använda MINUS operatör för att returnera lärare som inte också är elever:

SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students;

Resultat:

LÄRARNAMN
Ben
Cathy

Så vi får bara värden som visas i Teachers tabell som inte också visas i Elever tabell.

Vi kan få olika resultat, beroende på vilken tabell som är till vänster och vilken som är till höger. Här är ett exempel som sätter Studenter tabellen till vänster och Lärare till höger:

SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers;

Resultat:

STUDENTNAME
Ein
Faye
Jet
Spike

Den här gången får vi elever som inte också är lärare.

MINUS operatören returnerar endast distinkta rader. Så i vårt exempel returneras bara en rad för Cathy , även om det finns två lärare med det namnet.

Ett alternativ

Det är möjligt att få samma resultat utan att använda MINUS operatör. Till exempel skulle vi kunna skriva om vårt första exempel till detta:

SELECT 
    DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName);

Resultat:

LÄRARNAMN
Ben
Cathy

MINUS Motsvarigheter i andra RDBMS

Oracles MINUS operatorn liknar EXCEPT operatör som många andra RDBMS använder. MariaDB har en EXCEPT operatör, men den har också infört en MINUS operator som en synonym som kan användas i Oracle-läge.


  1. Hur man får en lista över alla språk i SQL Server (T-SQL)

  2. Hur ställer man in tidszonsregionen för JDBC Connection och undviker att SqlException-tidszonsregionen inte hittas?

  3. Hur man inaktiverar en främmande nyckelbegränsning i SQL Server (T-SQL-exempel)

  4. Hur DATE_SUB() fungerar i MariaDB