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
Libérer: 2025-01-21 22:01:14
original
982 Les gens l'ont consulté

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 :

SELECT * FROM a JOIN b USING(ID);
Copier après la connexion

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 :

SELECT * FROM a JOIN b ON a.ID = b.ID;
Copier après la connexion

Syntaxe WHERE

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

SELECT * FROM a, b WHERE a.ID = b.ID;
Copier après la connexion

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 :

FROM T1,T2,T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42
Copier après la connexion

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

FROM T1
   INNER JOIN T2 ON T1.ID = T2.ID
WHERE
   T1.foo = 'bar' AND T2.fish = 42
Copier après la connexion

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal