87 votes

Quelle est la valeur par défaut de MySQL JOIN (autonome), INNER ou?

J'ai donc regardé sur Internet au cours de la dernière heure, lisant et cherchant la réponse définitive à cette question simple.

Quelle est la valeur par défaut de JOIN dans MySQL?

 SELECT * FROM t1 JOIN t2
 

Est-ce la même chose que

 SELECT * FROM t1, t2

OR

SELECT * FROM t2 INNER JOIN t2
 

Également une question connexe, lorsque vous utilisez les clauses "WHERE", est-ce la même chose que JOIN ou INNER JOIN?

Pour le moment, je pense qu’une jointure autonome n’est rien de plus (identique à) en utilisant des virgules et des clauses WHERE.

Merci :)

116voto

Mark Byers Points 318575

Dans MySQL écrit JOIN non qualifié implique INNER JOIN. En d'autres termes l' INNER en INNER JOIN est facultatif. INNER et CROSS sont des synonymes dans MySQL. Pour plus de clarté j'écris JOIN ou INNER JOIN si j'ai une condition de jointure et d' CROSS JOIN si je n'ai pas une condition.

Le permis de syntaxe des jointures est décrit dans la documentation.


Droit maintenant, je pense à un stand-alone de JOINTURE est rien de plus (identique) à l'aide de virgules et les clauses where.

L'effet est le même, mais l'histoire est différente. La virgule syntaxe est à partir de la norme ANSI-89 standard. Cependant, il existe un certain nombre de problèmes avec cette syntaxe, donc dans la norme ANSI-92 la JOINTURE mot-clé a été introduit.

Je voudrais vous recommandons fortement de toujours utiliser la syntaxe de JOINTURE plutôt que la virgule.

  • T1 JOIN T2 ON ... est plus lisible qu' T1, T2 WHERE ....
  • Il est plus facile à maintenir car les relations entre les tables et les filtres sont clairement définis, plutôt que de les mêler ensemble.
  • La syntaxe de JOINTURE est plus facile de convertir à la JOINTURE EXTERNE de la virgule de la syntaxe.
  • Le mélange de la virgule et de la syntaxe de JOINTURE dans la même déclaration peut donner des curieux les erreurs dues aux règles de priorité.
  • Il est moins probable qu'accidentellement créer un produit cartésien lors de l'utilisation de la syntaxe de JOINTURE due à l'oubli de clause de jointure, parce que les clauses de jointure sont écrits à côté de la rejoint et il est facile de voir si l'on est absent.

0voto

Mchl Points 32343

Ceux-ci sont tous équivalents et égal à CROSS JOIN

Il existe certaines différences entre l’utilisation de virgules et la syntaxe [INNER | CROSS] JOIN , ce qui peut être important lorsque vous joignez plusieurs tables. Presque tout ce que vous avez besoin de savoir est décrit ici: http://dev.mysql.com/doc/refman/5.1/en/join.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X