create table A(id int);
create table B(id int);
INSERT INTO A VALUES(1);
INSERT INTO A VALUES(2);
INSERT INTO A VALUES(3);
INSERT INTO B VALUES(1);
INSERT INTO B VALUES(2);
INSERT INTO B VALUES(3);
SELECT * FROM A;
SELECT * FROM B;
id
-----------
1
2
3
id
-----------
1
2
3
filtro en la unión para evitar que filas de ser añadido durante el proceso de combinación.
select a.*,b.*
from A a left join B b
on a.id =b.id and a.id=2;
id id
----------- -----------
1 NULL
2 2
3 NULL
WHERE se filtrará después de que se haya producido la UNIÓN.
select a.*,b.*
from A a left join B b
on a.id =b.id
where a.id=2;
id id
----------- -----------
2 2
http://stackoverflow.com/questions/10297231/where-clause-vs-on-when-using-join – Habib
No es un duplicado, tener 'LEFT JOIN' aquí cambia significativamente la pregunta. – hvd
@hvd - las preguntas pueden no ser exactas, pero dado que la mayoría de las respuestas están en la línea de "no importa para 'INNER JOIN', pero esto es lo que sería diferente para 'OUTER JOIN's ... " –