Можно ли использовать WHERE для JOIN запросов

«Можно ли использовать WHERE для JOIN запросов» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. WHERE применяется для фильтрации результатов после выполнения JOIN. Однако, для лучшей читаемости и производительности, условия соединения лучше указывать в ON (часть JOIN), а условия фильтрации — в WHERE.

Пример:

SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id  -- условие соединения
WHERE o.amount > 100;              -- фильтрация

Нюансы:

  • ON определяет, как таблицы связываются.
  • WHERE фильтрует уже соединённые данные.
  • В некоторых СУБД (например, MySQL) оптимизатор может обрабатывать ON и WHERE одинаково, но семантически это разные части запроса.