Maison > base de données > tutoriel mysql > Quand LEFT JOIN et RIGHT JOIN sont-ils vraiment interchangeables ?

Quand LEFT JOIN et RIGHT JOIN sont-ils vraiment interchangeables ?

Susan Sarandon
Libérer: 2025-01-14 15:51:44
original
311 Les gens l'ont consulté

When Are LEFT JOIN and RIGHT JOIN Truly Interchangeable?

Comprendre les différences subtiles entre LEFT JOIN et RIGHT JOIN

Bien que LEFT JOIN et RIGHT JOIN puissent sembler interchangeables lors de l'utilisation de la même condition de jointure, leur comportement diffère considérablement en fonction de l'ordre des tables dans la requête. Explorons cela avec un exemple.

Considérez deux tableaux :

CREATE TABLE Table1 (id INT, Name VARCHAR(10));
CREATE TABLE Table2 (id INT, Name VARCHAR(10));
Copier après la connexion

Rempli avec les données suivantes :

Table1 Table2
Id Name Id
1 A 1
2 B 2
3

Lors de l'adhésion en utilisant Table1.id = Table2.id, les résultats de LEFT JOIN et RIGHT JOIN sont en effet identiques :

SELECT *
FROM Table1
LEFT JOIN Table2 ON Table1.id = Table2.id;

SELECT *
FROM Table2
RIGHT JOIN Table1 ON Table1.id = Table2.id;
Copier après la connexion

C'est parce que la condition de jointure est symétrique. Cependant, l'illusion de l'interchangeabilité s'effondre lorsque l'ordre des tables est inversé.

L'impact de l'ordre des tables

Observez la requête suivante :

SELECT *
FROM Table2
LEFT JOIN Table1 ON Table1.id = Table2.id;
Copier après la connexion

Cela renvoie toutes les lignes de Table2, quelle que soit une correspondance dans Table1. L'ensemble de résultats serait :

Table2 Table1
Id Name Id
1 A 1
2 B 2
3 C

À l'inverse, un RIGHT JOIN avec ordre des tables inversé :

SELECT *
FROM Table2
RIGHT JOIN Table1 ON Table1.id = Table2.id;
Copier après la connexion

Cela inclut uniquement les lignes de Table2 qui ont une ligne correspondante dans Table1. La ligne avec id = 3 dans Table2 serait exclue.

Par conséquent, même si la condition de jointure peut sembler symétrique, le choix entre LEFT JOIN et RIGHT JOIN, ainsi que l'ordre des tables, déterminent fondamentalement quelles lignes de la table sont garanties d'être incluses dans l'ensemble de résultats final, même s'il y a aucune correspondance dans l'autre tableau. Considérez toujours attentivement l’ordre des tables pour vous assurer d’obtenir les résultats attendus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal