on mệnh đề được sử dụng khi join đang tìm kiếm các hàng phù hợp. where mệnh đề được sử dụng để lọc các hàng sau khi thực hiện xong tất cả các phép nối.
Một ví dụ với những người ủng hộ Disney bỏ phiếu cho chủ tịch:
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'
Điều này vẫn trả về Romney mặc dù Donald đã không bỏ phiếu cho anh ta. Nếu bạn di chuyển điều kiện từ on đến where mệnh đề:
select *
from @candidates c
left join
@votes v
on c.name = v.voted_for
where v.voter = 'Donald Duck'
Romney sẽ không còn trong tập kết quả.