Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07038.jsonl.gz/429

MySQL utilise les syntaxes suivantes pour les commandes de
JOIN:
table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference INNER JOIN table_reference
table_reference STRAIGHT_JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference ON conditional_expression
table_reference LEFT [OUTER] JOIN table_reference USING (column_list)
table_reference NATURAL LEFT [OUTER] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional_expression }
La dernière syntaxe
LEFT OUTER JOIN n'existe que pour assurer la compatibilité avec ODBC.
- Les références sur les tables peuvent être des alias.
mysql> select t1.name, t2.salary from employee AS t1, info AS t2
where t1.name = t2.name;
INNER JOIN et
, (comma) sont équivalents. Les deux effectuent un regroupement des tables utilisées. Normalement, il faut préciser comment les tables sont reliées avec la condition
WHERE .
- La condition
ON est identique à
WHERE.
- Si il n'y a pas de lignes qui correspondent à la table de gauche, dans la clause
LEFT JOIN, une ligne dont toutes les colonnes sont mises à
NULL est générée. Ceci permet de rechercher les lignes d'une table qui n'ont pas de contrepartie dans une autre table.
mysql> select table1.* from table1
LEFT JOIN table2 ON table1.id=table2.id
where table2.id is NULL;
Cet exemple recherche toutes les lignes dans la
table1 avec une colonne
id qui n'est pas présent dans la table
table2 (i.e., toutes les lignes de la table
table1 qui n'ont pas de ligne correspondantes dans la table
table2). Cela implique que a été déclaré
table1.id, bien entendu !
- La clause
USING
column_list spécifie une liste de nom de colonne qui doivent exister dans toutes les tables. Une utilisation telle que
A LEFT JOIN B USING (C1,C2,C3,...)
Correspond à l'utilisation d'une clause
ON comme ceci :
A.C1=B.C1 AND A.C2=B.C2 AND A.C3=B.C3,...
- La clause
NATURAL LEFT JOIN de deux tables est équivalent à utilisation de la clause
LEFT JOIN avec
USING, en précisant les noms de toutes les colonnes qui existent dans les deux tables.
STRAIGHT_JOIN est identique à
JOIN, à l'exception du fait que la table de gauche est lue avant la table de droite. Cela est pratique pour les (rares) cas où l'optimiseur de regroupement utilise les tables dans le mauvais ordre .
Quelques exemples
mysql> select * from table1,table2 where table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> select * from table1 LEFT JOIN table2 USING (id);
mysql> select * from table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.id;
LEFT JOIN optimization.