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
Susan Sarandonoriginal
2025-01-14 15:51:44225parcourir

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 :

<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10));
CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>

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 :

<code class="language-sql">SELECT *
FROM Table1
LEFT JOIN Table2 ON Table1.id = Table2.id;

SELECT *
FROM Table2
RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>

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 :

<code class="language-sql">SELECT *
FROM Table2
LEFT JOIN Table1 ON Table1.id = Table2.id;</code>

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é :

<code class="language-sql">SELECT *
FROM Table2
RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>

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:
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