Следующие утверждения дают один и тот же результат (один использует on
, а другой - с помощью where
):
mysql> select * from gifts INNER JOIN sentGifts ON gifts.giftID = sentGifts.giftID;
mysql> select * from gifts INNER JOIN sentGifts WHERE gifts.giftID = sentGifts.giftID;
Я могу видеть только в случае, когда Left Outer Join обнаруживает "непревзойденные" случаи:
(чтобы узнать подарки, которые никогда не посылали никому)
mysql> select name from gifts LEFT OUTER JOIN sentgifts
ON gifts.giftID = sentgifts.giftID
WHERE sentgifts.giftID IS NULL;
В этом случае сначала используется on
, а затем where
. Выполняет ли on
совпадение, а затем where
выполняет "вторичную" фильтрацию? Или существует более общее правило использования on
по сравнению с where
? Спасибо.