El on
La cláusula se usa cuando join
está buscando filas coincidentes. El where
La cláusula se utiliza para filtrar filas después de realizar todas las uniones.
Un ejemplo con dibujos animados de Disney votando por presidente:
declare @candidates table (name varchar(50));
insert @candidates values
('Obama'),
('Romney');
declare @votes table (voter varchar(50), voted_for varchar(50));
insert @votes values
('Mickey Mouse', 'Romney'),
('Donald Duck', 'Obama');
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
and v.voter = 'Donald Duck'
Esto todavía devuelve Romney
aunque Donald
no votó por él. Si mueve la condición de on
al where
cláusula:
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
where v.voter = 'Donald Duck'
Romney
ya no estará en el conjunto de resultados.