Πράξεις συνόλων
Μπορούμε να χρησιμοποιήσουμε πράξεις συνόλων στην SQL όπως ένωση (UNION), τομή (INTERSECT) και αφαίρεση (EXCEPT) αφού κάθε στήλη ενός πίνακα μπορεί να θεωρηθεί ως ένα σύνολο ομοειδών (ίδιου τύπου) τιμών.
Παραδείγματα
Έστω οι δύο παρακάτω πίνακες table_a και table_b
table_a | table_b | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
UNION
Η UNION (ένωση) ενώνει δύο σύνολα με ίδιο αριθμό γνωρισμάτων και ίδιου τύπου δεδομένων. Κρατάει τα ονόματα γνωρισμάτων του πρώτου πίνακα.
SELECT A1,A2 FROM table_a UNION SELECT B1,B2 FROM table_b;
A1 | A2 |
---|---|
1 | 2 |
4 | 2 |
2 | 3 |
1 | 4 |
5 | 2 |
3 | 1 |
1 | 3 |
4 | 5 |
INTERSECT
Η INTERSECT (τομή) επιστρέφει την τομή δύο συνόλων με ίδιο αριθμό γνωρισμάτων και ίδιου τύπου δεδομένων. Κρατάει τα ονόματα γνωρισμάτων του πρώτου πίνακα.
SELECT W FROM table_a INTERSECT SELECT W FROM table_b;
W |
---|
5 |
1 |
Για την MySQL χρειάζεται άλλο ισοδύναμο ερώτημα
SELECT W FROM table_a INNER JOIN table_b USING (W);
W |
---|
5 |
1 |
ή
SELECT A1, A2 FROM table_a INNER JOIN table_b ON A1=B1 AND A2=B2;
EXCEPT
Η EXCEPT (μείον ή MINUS) επιστρέφει τη διαφορά μεταξύ δύο συνόλων με ίδιο αριθμό γνωρισμάτων και ίδιου τύπου δεδομένων. Κρατάει τα ονόματα γνωρισμάτων του πρώτου πίνακα.
SELECT W FROM table_a EXCEPT SELECT W FROM table_b;
W |
---|
6 |
3 |
Για την MySQL χρειάζεται άλλο ισοδύναμο ερώτημα
SELECT DISTINCT * FROM table_a WHERE NOT EXISTS (SELECT * FROM table_b);