Der on
-Klausel wird verwendet, wenn die join
sucht nach übereinstimmenden Zeilen. Das where
-Klausel wird verwendet, um Zeilen zu filtern, nachdem alle Verknüpfungen abgeschlossen sind.
Ein Beispiel mit Disney-Toons, die für den Präsidenten stimmen:
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'
Dies gibt immer noch Romney
zurück obwohl Donald
habe ihn nicht gewählt. Wenn Sie die Bedingung von on
verschieben zum where
Klausel:
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
where v.voter = 'Donald Duck'
Romney
wird nicht mehr in der Ergebnismenge enthalten sein.