1. `Inner join` (πιο συνηθισμένο):
Επιστρέφει σειρές μόνο όταν υπάρχει ένας αγώνας και στους δύο πίνακες που βασίζονται στην κατάσταση σύνδεσης. Εάν δεν υπάρχει καμία αντιστοιχία σε κανέναν πίνακα, η σειρά αποκλείεται από το αποτέλεσμα.
`` sql
Επιλέξτε Column_Names
Από τον Πίνακα1
Εσωτερική συμμετοχή του Πίνακα2 στον Πίνακα1.COLUMN_NAME =ΠΙΝΑΚΑΣ2.COLUMN_NAME;
`` `
* `table1` και` table2`:τα τραπέζια που θέλετε να συμμετάσχετε.
* `column_name`:Οι στήλες που χρησιμοποιούνται για να ταιριάζουν με τις σειρές μεταξύ των πινάκων. Αυτές οι στήλες πρέπει να έχουν συμβατούς τύπους δεδομένων.
Παράδειγμα:
Ας πούμε ότι έχετε δύο πίνακες:
* `πελάτες`: `Customerid`,` name ', `city'
* `Παραγγελίες ': `Orderid`,` customerid ', `orderdate',` Totalamount '
Για να λάβετε το όνομα του πελάτη και τα στοιχεία παραγγελίας για όλες τις παραγγελίες:
`` sql
Επιλέξτε Customer.Name, Orders.ORDERID, ORDERS.ORDERDATE, ORDERS.TOTALAMOUNT
Από πελάτες
Εσωτερική συμμετοχή εντολών σε πελάτες.CustomerId =orders.customerid;
`` `
Αυτό θα επιστρέψει μόνο τους πελάτες που έχουν θέσει παραγγελίες και παραγγελίες που ανήκουν σε υπάρχοντες πελάτες.
2. `Left join '(ή` αριστερά εξωτερικά join'):
Επιστρέφει όλες τις σειρές από τον αριστερό τραπέζι (`table1`), ακόμη και αν δεν υπάρχει αντιστοιχία στο σωστό τραπέζι (` table2`). Εάν δεν υπάρχει καμία αντιστοιχία στο σωστό πίνακα, οι στήλες από το δεξιό πίνακα θα έχουν τιμές «null».
`` sql
Επιλέξτε Column_Names
Από τον Πίνακα1
Αριστερά Join Table2 στον Πίνακα1.COLUMN_NAME =ΠΙΝΑΚΑΣ2.COLUMN_NAME;
`` `
Παράδειγμα: Για να λάβετε όλους τους πελάτες και τις παραγγελίες τους (συμπεριλαμβανομένων των πελατών χωρίς παραγγελίες):
`` sql
Επιλέξτε Customer.Name, Orders.ORDERID, ORDERS.ORDERDATE, ORDERS.TOTALAMOUNT
Από πελάτες
Αριστερά εντολές συμμετοχής σε πελάτες.customerid =orders.customerid;
`` `
3. «Δεξιά ένωση» (ή «δεξιά εξωτερική ένωση»):
Επιστρέφει όλες τις σειρές από το δεξιό τραπέζι (`table2`), ακόμη και αν δεν υπάρχει αντιστοιχία στον αριστερό πίνακα (` table1`). Εάν δεν υπάρχει αντιστοιχία στον αριστερό τραπέζι, οι στήλες από τον αριστερό τραπέζι θα έχουν τιμές «null».
`` sql
Επιλέξτε Column_Names
Από τον Πίνακα1
Δεξιά Συμμετοχή Πίνακας2 στον Πίνακα1.COLUMN_NAME =ΠΙΝΑΚΑΣ2.COLUMN_NAME;
`` `
Παράδειγμα: (Λιγότερο συνηθισμένο, αλλά χρήσιμο σε συγκεκριμένα σενάρια) Αυτό είναι λειτουργικά ισοδύναμο με μια «αριστερή join» με τα τραπέζια που ανταλλάσσονται.
4. «Πλήρης εξωτερική ένωση»:
Επιστρέφει όλες τις σειρές και από τους δύο πίνακες. Εάν υπάρχει ένας αγώνας, επιστρέφεται η αντίστοιχη σειρά. Εάν δεν υπάρχει αντιστοιχία σε έναν πίνακα, οι στήλες από τον άλλο πίνακα θα έχουν τιμές «null». Το MySQL δεν υποστηρίζει άμεσα το `Full Outer Join ' . Πρέπει να το προσομοιώσετε χρησιμοποιώντας «ένωση» της «αριστερά join» και «right join».
`` sql
Επιλέξτε Column_Names
Από τον Πίνακα1
Αριστερά Join Table2 στον πίνακα1.column_name =table2.column_name
ΕΝΩΣΗ
Επιλέξτε Column_Names
Από τον Πίνακα1
Δεξιά Συμμετοχή Πίνακας2 στον Πίνακα1.COLUMN_NAME =ΠΙΝΑΚΑΣ2.COLUMN_NAME;
`` `
Επιλέγοντας τη σωστή συμμετοχή:
Η επιλογή του τύπου σύνδεσης εξαρτάται από τα δεδομένα που χρειάζεστε. `Το Inner Join 'είναι η πιο συχνή επιλογή, αλλά η` left join' και 'right join' είναι κρίσιμα όταν πρέπει να διατηρήσετε όλες τις σειρές από ένα από τα τραπέζια. Προσομοίωση `πλήρης εξωτερική join 'όταν χρειάζεστε όλες τις σειρές και από τα δύο τραπέζια. Θυμηθείτε να χρησιμοποιήσετε ψευδώνυμα (`table1`,` table2 ') για σαφήνεια και να αποφύγετε την ασάφεια όταν τα ονόματα των στηλών είναι τα ίδια και στους δύο πίνακες.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα