Оператор SQL SELECT должен следовать определённому порядку предложений. Если написать предложения в другой последовательности, возникнет синтаксическая ошибка.
Предложения должны идти в таком порядке:
SELECT → FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
SELECT – указывает столбцы для выборкиFROM – определяет исходную таблицуJOIN / ON – объединяет строки из нескольких таблиц по связанному столбцуWHERE – фильтрует строки до группировкиGROUP BY – агрегирует строки с одинаковыми значениямиHAVING – фильтрует группы после агрегации (в отличие от WHERE, работает с агрегатными функциями)ORDER BY – сортирует итоговый результирующий наборLIMIT – ограничивает количество возвращаемых строкТипичная ошибка — путаница между WHERE и HAVING:
WHERE для фильтрации отдельных строк до агрегацииHAVING для фильтрации сгруппированных результатов после агрегацииSELECT department, COUNT(*) AS total
FROM employees
JOIN departments ON employees.dept_id = departments.id
WHERE status = 'active'
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY total DESC
LIMIT 10;
Не все предложения нужны в каждом запросе — обязательными являются только SELECT и FROM.
Предложение WHERE всегда должно находиться после предложения GROUP BY в SQL SELECT запросе.
Новый — ещё не проверен сообществом
Вы