soporta - optimizar consultas mysql explain
¿Cómo usar mysql JOIN sin condición ON? (3)
La documentation MySQL cubre este tema.
Aquí hay una sinopsis. Cuando se usa join
o inner join
, la condición de on
es opcional. Esto es diferente del estándar ANSI y diferente de casi cualquier otra base de datos. El efecto es una cross join
. Del mismo modo, puede usar una cláusula on
con cross join
, que también difiere de SQL estándar.
Una unión cruzada crea un producto cartesiano, es decir, cada combinación posible de 1 fila de la primera tabla y 1 fila de la segunda. La unión cruzada para una tabla con tres filas (''a'', ''b'' y ''c'') y una tabla con cuatro filas (digamos 1, 2, 3, 4) tendría 12 filas.
En la práctica, si quieres hacer una combinación cruzada, utiliza cross join
:
from A cross join B
es mucho mejor que:
from A, B
y:
from A join B -- with no on clause
La cláusula on
se requiere para una combinación externa derecha o izquierda, por lo que la discusión no es relevante para ellos.
Si necesita comprender los diferentes tipos de uniones, entonces necesita estudiar en bases de datos relacionales. Stackoverflow no es un lugar apropiado para ese nivel de discusión.
¿Es posible escribir una consulta de combinación sin la declaración ON
? y cómo difieren estas combinaciones LEFT JOIN, RIGHT JOIN
funciona.
También es posible que desee investigar el uso de UNION, que combina varias tablas para una salida: SQL - Combina dos tablas para una salida
Vea algún ejemplo en http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Puede usar ''USING'' en lugar de ''ON'' como en la consulta
SELECT * FROM table1 LEFT JOIN table2 USING (id);