MySQL UNION – Πλήρες φροντιστήριο
Τι είναι η Ένωση;
Οι ενώσεις συνδυάζουν τα αποτελέσματα από πολλαπλά ερωτήματα SELECT σε ένα ενοποιημένο σύνολο αποτελεσμάτων.
Οι μόνες απαιτήσεις για να λειτουργήσει αυτό είναι ότι ο αριθμός των στηλών πρέπει να είναι ίδιος από όλα τα ερωτήματα SELECT που πρέπει να συνδυαστούν.
Ας υποθέσουμε ότι έχουμε δύο πίνακες ως εξής
Ας δημιουργήσουμε τώρα ένα ερώτημα UNION για να συνδυάσει και τους δύο πίνακες χρησιμοποιώντας DISTINCT
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Εδώ οι διπλότυπες σειρές καταργούνται και επιστρέφονται μόνο οι μοναδικές σειρές.
Σημείωση: MySQL χρησιμοποιεί τον όρο DISTINCT ως προεπιλογή κατά την εκτέλεση ερωτημάτων UNION εάν δεν έχει καθοριστεί τίποτα.
Ας δημιουργήσουμε τώρα ένα ερώτημα UNION για να συνδυάσει και τους δύο πίνακες χρησιμοποιώντας ALL
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Εδώ περιλαμβάνονται διπλότυπες σειρές και αφού χρησιμοποιούμε ΟΛΕΣ.
Γιατί να χρησιμοποιήσετε το Unions;
Ας υποθέσουμε ότι υπάρχει ένα ελάττωμα στον σχεδιασμό της βάσης δεδομένων σας και χρησιμοποιείτε δύο διαφορετικούς πίνακες που προορίζονται για τον ίδιο σκοπό. Θέλετε να ενοποιήσετε αυτούς τους δύο πίνακες σε έναν, ενώ παραλείπετε τυχόν διπλότυπες εγγραφές να εισέλθουν στον νέο πίνακα. Μπορείτε να χρησιμοποιήσετε το UNION σε τέτοιες περιπτώσεις.
Σύνοψη
- Η εντολή UNION χρησιμοποιείται για να συνδυάσει περισσότερα από ένα αποτελέσματα ερωτήματος SELECT σε ένα μόνο ερώτημα που περιέχει σειρές από όλα τα επιλεγμένα ερωτήματα.
- Ο αριθμός των στηλών και των τύπων δεδομένων στο ΕΠΙΛΟΓΗ δηλώσεων πρέπει να είναι το ίδιο για να λειτουργήσει η εντολή UNION.
- Ο όρος DISTINCT χρησιμοποιείται για την εξάλειψη διπλότυπων τιμών από το σύνολο αποτελεσμάτων ερωτήματος UNION. MySQL χρησιμοποιεί τον όρο DISTINCT ως προεπιλογή κατά την εκτέλεση ερωτημάτων UNION εάν δεν έχει καθοριστεί τίποτα.
- Ο όρος ALL χρησιμοποιείται για την επιστροφή όλων ακόμη και των διπλότυπων σειρών στο ερώτημα UNION.
Πρακτικά παραδείγματα χρησιμοποιώντας MySQL πάγκος εργασίας
Στο myFlixDB μπορούμε να συνδυάσουμε
μέλος_αριθμός και πλήρη_ονόματα από τον πίνακα Μελών
με
movie_id και τίτλος από τον πίνακα ταινιών
Μπορούμε να χρησιμοποιήσουμε το ακόλουθο ερώτημα
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Εκτέλεση του παραπάνω σεναρίου στο MySQL πάγκος εργασίας έναντι του myflixdb μας δίνει τα ακόλουθα αποτελέσματα που φαίνονται παρακάτω.
membership_number | full_names |
---|---|
1 | Janet Jones |
2 | Janet Smith Jones |
3 | Robert Phil |
4 | Gloria Williams |
5 | Leonard Hofstadter |
6 | Sheldon Cooper |
7 | Rajesh Koothrappali |
8 | Leslie Winkle |
9 | Howard Wolowitz |
16 | 67% Guilty |
6 | Angels and Demons |
4 | Code Name Black |
5 | Daddy's Little Girls |
7 | Davinci Code |
2 | Forgetting Sarah Marshal |
9 | Honey mooners |
19 | movie 3 |
1 | Pirates of the Caribean 4 |
18 | sample movie |
17 | The Great Dictator |
3 | X-Men |