Il on
La clausola viene utilizzata quando il join
sta cercando righe corrispondenti. Il where
La clausola viene utilizzata per filtrare le righe al termine di tutte le operazioni di unione.
Un esempio con i cartoni animati Disney che votano per la presidenza:
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'
Questo restituisce ancora Romney
anche se Donald
non ha votato per lui. Se sposti la condizione da on
al where
clausola:
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
where v.voter = 'Donald Duck'
Romney
non sarà più nel set di risultati.