powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Какой порядок выполнения group by, select, having?
4 сообщений из 4, страница 1 из 1
Какой порядок выполнения group by, select, having?
    #39871776
Всем привет.
В какой-то последовательности запрос выполняется, передавая по цепочке временную таблицу с текущим промежуточным результатом (которая состоит из всех столбцов полученных джоинами и подзапросами в FROM).
Агрегатные функции добавляют временной таблице несуществующих в реальности столбцов.
А SELECT уже работает с итоговым результатом.
По этой причине в HAVING можно использовать агрегатное поле (т.е. не существующее физически в таблице).

FROM -- собираем общую таблицу
WHERE -- фильтруем, остается только нужное
GROUP BY\ORDER BY [+АГРЕГАТНЫЕ ФУНКЦИИ]
SELECT
HAVING
...
Рейтинг: 0 / 0
Какой порядок выполнения group by, select, having?
    #39871886
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формально: WITH, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Выражения вычисляются в момент теоретичской надобности.
...
Рейтинг: 0 / 0
Какой порядок выполнения group by, select, having?
    #39872460
Akina,
от субд зависит, когда выполняется SELECT? Сейчас сделал тесты, получил следующее:
ORDER BY выполняется и с полем в SELECT, и с полем, которое в SELECT не указано
HAVING можно выполнить, только если поле есть в SELECT
...
Рейтинг: 0 / 0
Какой порядок выполнения group by, select, having?
    #39872463
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космосаHAVING можно выполнить, только если поле есть в SELECTЕрунда. HAVING требует, чтобы указанное поле или выражение имело смысл после операции группировки.

Например, совершенно легитимно
Код: sql
1.
2.
3.
4.
SELECT field1, SUM(field2)
FROM table
GROUP BY field1
HAVING AVG(field3) > MAX(field4)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Какой порядок выполнения group by, select, having?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]