sql >> Base de Datos >  >> RDS >> Oracle

Diferencia entre las cláusulas ON y WHERE en las uniones de tablas SQL

La principal diferencia es cuando usa diferentes combinaciones.

Por lo general, debería ver el mismo resultado si usara uniones internas, pero una vez que comience a usar uniones IZQUIERDAS, los resultados cambiarán.

Echa un vistazo al siguiente ejemplo

DEMOSTRACIÓN de violín SQL

Y échale un vistazo al siguiente artículo (muy explicativo)

EDITAR para @ShannonSeverance

Esquema y datos de prueba

CREATE TABLE Table1 (
  ID INT,
  Val VARCHAR(20)
 );

INSERT INTO Table1 VALUES (1,'a');
INSERT INTO Table1 VALUES (2,'a');

CREATE TABLE Table2 (
  ID INT,
  Val VARCHAR(20)
 );

INSERT INTO Table2 VALUES (1,'a');

y Pruebas

SELECT t1.ID,
t1.Val,
t2.ID ID2,
t2.Val Val2
FROM Table1 t1 INNER JOIN
Table2 t2 ON t1.ID = t2.ID AND t1.Val = t2.Val;

SELECT  t1.ID,
t1.Val,
t2.ID ID2,
t2.Val Val2
FROM Table1 t1,Table2 t2 
WHERE t1.ID = t2.ID
 AND t1.Val = t2.Val;

SELECT  t1.ID,
t1.Val,
t2.ID ID2,
t2.Val Val2
FROM Table1 t1 LEFT JOIN
Table2 t2 ON t1.ID = t2.ID  AND t1.Val = t2.Val;

SELECT  t1.ID,
t1.Val,
t2.ID ID2,
t2.Val Val2
FROM Table1 t1 LEFT JOIN
Table2 t2 ON t1.ID = t2.ID  
WHERE t1.Val = t2.Val;