Κοινή χρήση τεχνολογίας

MySQL: χρήση στο ή που μετά την αριστερή συμμετοχή;

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Στη MySQL,LEFT JOIN Χρησιμοποιείται για την επιστροφή όλων των εγγραφών από τον αριστερό πίνακα (δηλαδή τον πίνακα στα αριστερά της λέξης-κλειδιού LEFT JOIN), ακόμα κι αν δεν υπάρχουν αντίστοιχες εγγραφές στον δεξιό πίνακα. Για εκείνες τις εγγραφές που δεν ταιριάζουν στον σωστό πίνακα, το δεξιό τμήμα πίνακα του συνόλου αποτελεσμάτων θα γεμίσει με NULL.σχετικά μεONκαιWHEREΗ χρήση των ρητρών, είναι μέσαLEFT JOINΟι ρόλοι είναι διαφορετικοί:

  • ΕΠΙ Ρήτρα: χρησιμοποιείται για τον καθορισμό συνθηκών σύνδεσης, δηλαδή για τον προσδιορισμό ποιες εγγραφές πρέπει να ενωθούν μεταξύ τους.Όταν χρειάζεται να συνδυάσετε εγγραφές με βάση τη σχέση μεταξύ συγκεκριμένων τιμών πεδίων στον αριστερό και τον δεξιό πίνακα, αυτές οι συνθήκες θα πρέπει να τοποθετηθούνON αργότερα.αν μέσαONΥπάρχουν πρόσθετοι περιορισμοί υπό όρους στον δεξιό πίνακα αργότερα, οι οποίοι θα εφαρμοστούν επίσης κατά τη σύνδεση, αλλά δεν θα επηρεάσουν την αρχή της επιστροφής όλων των εγγραφών από τον αριστερό πίνακα.
  • ΟΠΟΥ Ρήτρα: χρησιμοποιείται για ζεύγη που έχουν περάσειJOIN Το σύνολο αποτελεσμάτων που δημιουργείται από τη λειτουργία φιλτράρεται περαιτέρω.Όταν τοποθετηθεί η συνθήκηWHEREρήτρα, αυτές οι εγγραφές που δεν πληρούν τις προϋποθέσεις (είτε από τον αριστερό πίνακα είτε από τον δεξιό πίνακα) θα αφαιρεθούν, γεγονός που μπορεί να επηρεάσει την αρχική πρόθεση επιστροφής όλων των εγγραφών από τον αριστερό πίνακα, ειδικά όταν χειρίζεστε τιμές NULL, πρέπει να ιδιαίτερα προσεκτικός.

Συγκεκριμένη περίπτωση πρώτη:

Ας υποθέσουμε ότι έχουμε δύο πίνακες, το ένα είναιemployees(πίνακας εργαζομένων), το άλλο είναιdepartments(πίνακας τμημάτων), θέλουμε να μάθουμε όλους τους υπαλλήλους και τα ονόματα των τμημάτων τους, ακόμα κι αν κάποιοι υπάλληλοι δεν έχουν τοποθετηθεί σε συγκεκριμένο τμήμα.

πίνακας εργαζομένων:

ταυτότηταόνομα
1Αλίκη
2Βαρίδι
3Κάλαντα

πίνακας τμημάτων:

ταυτότηταόνομα
1HR
2ΤΟ
3Εμπορία

σε,employeesτραπέζιdepartment_idΤο πεδίο μπορεί να είναι NULL, υποδεικνύοντας ότι δεν υπάρχει εκχωρημένο τμήμα.

Παράδειγμα χρήσης ON:

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;