on
join
の場合に句が使用されます 一致する行を探しています。 where
句は、すべての結合が完了した後に行をフィルタリングするために使用されます。
ディズニーのトゥーンズが大統領に投票した例:
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'
これでもRomney
が返されます Donald
にもかかわらず 彼に投票しなかった。条件をon
から移動した場合 where
へ 条項:
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
where v.voter = 'Donald Duck'
Romney
結果セットには含まれなくなります。