Maison >base de données >tutoriel mysql >SQL JOIN : USING, ON ou WHERE – Quelle syntaxe devez-vous choisir ?

SQL JOIN : USING, ON ou WHERE – Quelle syntaxe devez-vous choisir ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 22:01:14934parcourir

SQL JOINs: USING, ON, or WHERE – Which Syntax Should You Choose?

Comparaison des méthodes SQL JOIN : USING, ON et WHERE

SQL fournit trois syntaxes pour effectuer les opérations JOIN : USING, ON et WHERE. Bien que ces syntaxes semblent similaires, elles peuvent affecter la lisibilité, l’exactitude et les performances des requêtes.

UTILISER la syntaxe

La syntaxe

USING utilise le mot clé USING suivi d'un nom de colonne commun aux deux tables pour spécifier la colonne de jointure :

<code class="language-sql">SELECT * FROM a JOIN b USING(ID);</code>

Syntaxe ON

La syntaxe

ON utilise le mot-clé ON et une expression d'égalité entre les colonnes jointes pour définir explicitement les conditions de jointure :

<code class="language-sql">SELECT * FROM a JOIN b ON a.ID = b.ID;</code>

Syntaxe WHERE

La syntaxe WHERE combine les conditions de jointure et de filtrage dans une clause WHERE :

<code class="language-sql">SELECT * FROM a, b WHERE a.ID = b.ID;</code>

Considérations relatives aux performances

Il n'y a pas de différence de performances significative entre ces options de syntaxe. Cependant, en raison d'une ambiguïté potentielle, notamment avec les requêtes impliquant des OUTER JOIN, la syntaxe WHERE n'est pas recommandée.

Différences sémantiques

La syntaxe

USING spécifie explicitement uniquement les colonnes de jointure, ce qui apporte de la clarté et réduit le risque de conditions de jointure incorrectes.

La syntaxe

ON autorise des conditions de jointure plus complexes, notamment des opérateurs d'inégalité (=, !=, >) ou des conditions de jointure supplémentaires (par exemple, AND/OR).

La syntaxe WHERE effectue implicitement une INNER JOIN basée sur l'égalité des colonnes spécifiées. Cela peut conduire à des produits cartésiens inattendus ou à des résultats incorrects pour les jointures externes.

Exemple de description

Considérez la requête suivante :

<code class="language-sql">FROM T1,T2,T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42</code>

Il n'est pas clair si T1.foo = 'bar' est une condition de jointure ou une condition de filtre.

La réécriture de la requête en utilisant la syntaxe ON peut apporter de la clarté :

<code class="language-sql">FROM T1
   INNER JOIN T2 ON T1.ID = T2.ID
WHERE
   T1.foo = 'bar' AND T2.fish = 42</code>

Conclusion

Bien que les options de syntaxe USING, ON et WHERE puissent toutes accomplir une opération JOIN, la syntaxe ON est généralement préférée en raison de sa plus grande lisibilité, exactitude et cohérence dans la gestion des jointures externes. La syntaxe USING apporte de la simplicité, tandis que la syntaxe WHERE doit être évitée en raison de son ambiguïté potentielle.

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