MINUS in MySQL

Written by  on Oktober 4, 2011 

In der relationalen Algebra existiert die einfache Möglichkeit, eine Differenz zwischen zwei Tabellen zu bilden. Das geht über den Operator MINUS oder auch Differenz genannt.
Dazu heißt es:

Bei der Operation R-S werden aus der ersten Relation R alle Tupel entfernt, die auch in der zweiten Relation S vorhanden sind.

Aber MySQL sieht keinen solchen Operator vor.
Die Aufgabe lässt sich aber trotzdem einfach lösen:

mysql> select * from r;
+------+------+------+
| a    | b    | c    |
+------+------+------+
| 1    | 2    | 3    |
| 4    | 2    | 3    |
| 4    | 5    | 6    |
| 2    | 5    | 3    |
| 1    | 2    | 6    |
+------+------+------+
5 rows in set (0.00 sec)

mysql> select * from s;
+------+------+------+
| a    | b    | c    |
+------+------+------+
| 2    | 5    | 3    |
| 2    | 5    | 4    |
| 4    | 5    | 6    |
| 1    | 2    | 3    |
+------+------+------+
4 rows in set (0.00 sec)

mysql> select a,b,c from r where (a,b,c) not in (select a,b,c from s);
+------+------+------+
| a    | b    | c    |
+------+------+------+
| 4    | 2    | 3    |
| 1    | 2    | 6    |
+------+------+------+
2 rows in set (0.00 sec)

Category : Allgemein

Tags :

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.