on
клаузата се използва, когато join
търси съвпадащи редове. where
Клаузата се използва за филтриране на редове, след като е извършено цялото свързване.
Пример с това, че Disney toons гласува за президент:
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
вече няма да бъде в набора от резултати.