MySQL UNION - Πλήρες σεμινάριο

Anonim

Τι είναι η ένωση;

Τα συνδικάτα συνδυάζουν τα αποτελέσματα από πολλά ερωτήματα SELECT σε ένα συγκεντρωτικό σύνολο αποτελεσμάτων.

Οι μόνες απαιτήσεις για να λειτουργήσει αυτό είναι ότι ο αριθμός στηλών πρέπει να είναι ο ίδιος από όλα τα ερωτήματα SELECT που πρέπει να συνδυαστούν.

Ας υποθέσουμε ότι έχουμε δύο πίνακες ως εξής

Ας δημιουργήσουμε τώρα ένα ερώτημα UNION για να συνδυάσουμε και τους δύο πίνακες χρησιμοποιώντας το DISTINCT

SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT column1,column2 FROM `table2`;

Εδώ καταργούνται διπλές σειρές και επιστρέφονται μόνο μοναδικές σειρές.

Σημείωση: Η MySQL χρησιμοποιεί την ρήτρα DISTINCT ως προεπιλογή κατά την εκτέλεση ερωτημάτων UNION εάν δεν έχει καθοριστεί τίποτα.

Ας δημιουργήσουμε τώρα ένα ερώτημα UNION για να συνδυάσουμε και τους δύο πίνακες χρησιμοποιώντας ΟΛΑ

SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;

Εδώ περιλαμβάνονται διπλές σειρές και αφού χρησιμοποιούμε ΟΛΑ.

Γιατί να χρησιμοποιήσετε συνδικάτα

Ας υποθέσουμε ότι υπάρχει ένα ελάττωμα στο σχεδιασμό της βάσης δεδομένων σας και χρησιμοποιείτε δύο διαφορετικούς πίνακες που προορίζονται για τον ίδιο σκοπό. Θέλετε να ενοποιήσετε αυτούς τους δύο πίνακες σε έναν, παραλείποντας παράλληλα τυχόν διπλότυπες εγγραφές να περάσουν στον νέο πίνακα. Μπορείτε να χρησιμοποιήσετε το UNION σε τέτοιες περιπτώσεις.

Περίληψη

  • Η εντολή UNION χρησιμοποιείται για να συνδυάσει περισσότερα από ένα αποτελέσματα ερωτήματος SELECT σε ένα ερώτημα που περιέχει σειρές από όλα τα επιλεγμένα ερωτήματα.
  • Ο αριθμός στηλών και τύπων δεδομένων στις δηλώσεις SELECT πρέπει να είναι ο ίδιος για να λειτουργήσει η εντολή UNION.
  • Η ρήτρα DISTINCT χρησιμοποιείται για την εξάλειψη διπλών τιμών από το σύνολο αποτελεσμάτων ερωτημάτων UNION. Η MySQL χρησιμοποιεί την ρήτρα DISTINCT ως προεπιλογή κατά την εκτέλεση ερωτημάτων UNION εάν δεν έχει καθοριστεί τίποτα.
  • Ο όρος ALL χρησιμοποιείται για να επιστρέψει όλες ακόμη και τις διπλές σειρές στο ερώτημα UNION.

Πρακτικά παραδείγματα που χρησιμοποιούν τον πάγκο εργασίας MySQL

Στο myFlixDB ας συνδυάσουμε

Members_number και full_names από τον πίνακα μελών

με

movie_id και τίτλος από τον πίνακα ταινιών

Μπορούμε να χρησιμοποιήσουμε το ακόλουθο ερώτημα

SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `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