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ả.