De on
clausule wordt gebruikt wanneer de join
is op zoek naar bijpassende rijen. De where
clausule wordt gebruikt om rijen te filteren nadat alle samenvoegingen zijn voltooid.
Een voorbeeld waarbij Disney toons op president stemde:
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'
Dit geeft nog steeds Romney
hoewel Donald
heb niet op hem gestemd. Als u de voorwaarde verplaatst van de on
naar de where
clausule:
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
where v.voter = 'Donald Duck'
Romney
zal niet langer in de resultatenset staan.