Höllis Blog

Die Antworten auf die Frage nach dem Leben, dem Universum und allem

MINUS in MySQL

,

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)

Master-Master ReplikationAus der LVS Mailing-Liste

Write a comment

New comments have been disabled for this post.

June 2012
M T W T F S S
May 2012July 2012
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30