Maison >base de données >tutoriel mysql >« FROM Table1 LEFT JOIN Table2 » et « FROM Table2 RIGHT JOIN Table1 » sont-ils toujours interchangeables ?
SQL LEFT JOIN
et RIGHT JOIN
: sont-ils toujours équivalents ?
SQL LEFT JOIN
et RIGHT JOIN
combinent les données de deux tables. Bien qu'apparemment interchangeable dans certains cas, une distinction clé existe.
Examinons deux tableaux :
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
Remplir Table1
:
<code>Id | Name ---|----- 1 | A 2 | B</code>
Et Table2
:
<code>Id | Name ---|----- 1 | A 2 | B 3 | C</code>
Les requêtes :
<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>
donnent des résultats identiques dans ce cas spécifique. Les deux lignes correspondent en fonction de Table1.id = Table2.id
.
Cependant, considérez cette alternative LEFT JOIN
:
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table2.id = Table1.id;</code>
Cette requête renvoie toutes les lignes de Table2
, y compris celles sans correspondance dans Table1
. Un RIGHT JOIN
(par exemple, FROM Table1 RIGHT JOIN Table2
) se comporterait à l'inverse, en omettant ces lignes sans correspondance.
Par conséquent, même si FROM Table1 LEFT JOIN Table2
et FROM Table2 RIGHT JOIN Table1
peuvent produire des résultats similaires dans des conditions spécifiques, la direction de jointure affecte considérablement l'exhaustivité du résultat. Ils ne sont pas universellement interchangeables.
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!