В каком порядке выполняются части SELECT-запроса?

Ответ

FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT. Это важно: WHERE применяется ДО агрегации, HAVING — после. Алиасы из SELECT можно использовать в ORDER BY, но не в WHERE.

Разбор: Логический порядок: FROM/JOIN формируют набор строк, WHERE фильтрует ДО агрегации, затем GROUP BY и HAVING (фильтр после агрегации), потом SELECT, DISTINCT, ORDER BY и LIMIT. Поэтому алиасы из SELECT недоступны в WHERE (он выполняется раньше), но доступны в ORDER BY, а агрегатные функции в WHERE использовать нельзя — для этого есть HAVING.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться