Следующие утверждения дают один и тот же результат (один использует 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? Спасибо.