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.