Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle MINUS-Operator erklärt

In der Oracle-Datenbank das MINUS Der Operator wird verwendet, um nur eindeutige Zeilen zurückzugeben, die von der ersten Abfrage zurückgegeben wurden, nicht jedoch von der zweiten.

Beispiel

Angenommen, wir haben die folgenden Tabellen:

SELECT * FROM Teachers;
SELECT * FROM Students;

Ergebnis:

LEHRERID LEHRERNAME
1 Warren
2 Ben
3 Cathy
4 Cathy
5 Rechnung
6 Rechnung
STUDENTID STUDENTENNAME
1 Faye
2 Jet
3 Spitze
4 Ein
5 Warren
6 Rechnung

Wir können das MINUS verwenden Operator, um Lehrer zurückzugeben, die nicht gleichzeitig Schüler sind:

SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students;

Ergebnis:

LEHRERNAME
Ben
Cathy

Wir erhalten also nur Werte, die in Teachers vorkommen Tabelle, die nicht auch in den Students erscheinen Tisch.

Wir können unterschiedliche Ergebnisse erhalten, je nachdem, welche Tabelle links und welche rechts ist. Hier ist ein Beispiel, das Students einfügt Tisch links und Teachers rechts:

SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers;

Ergebnis:

STUDENTENNAME
Ein
Faye
Jet
Spitze

Diesmal bekommen wir Schüler, die nicht gleichzeitig Lehrer sind.

Das MINUS -Operator gibt nur eindeutige Zeilen zurück. In unserem Beispiel wird also nur eine Zeile für Cathy zurückgegeben , obwohl es zwei Lehrer mit diesem Namen gibt.

Eine Alternative

Es ist möglich, das gleiche Ergebnis zu erhalten, ohne den MINUS zu verwenden Operator. Zum Beispiel könnten wir unser erstes Beispiel so umschreiben:

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

Ergebnis:

LEHRERNAME
Ben
Cathy

MINUS Äquivalente in anderen RDBMSs

Oracles MINUS Der Operator ähnelt dem EXCEPT Operator, den viele andere RDBMS verwenden. MariaDB hat ein EXCEPT Operator, aber es hat auch ein MINUS eingeführt Operator als Synonym, das im Oracle-Modus verwendet werden kann.