|
Какой порядок выполнения group by, select, having?
|
|||
---|---|---|---|
#18+
Всем привет. В какой-то последовательности запрос выполняется, передавая по цепочке временную таблицу с текущим промежуточным результатом (которая состоит из всех столбцов полученных джоинами и подзапросами в FROM). Агрегатные функции добавляют временной таблице несуществующих в реальности столбцов. А SELECT уже работает с итоговым результатом. По этой причине в HAVING можно использовать агрегатное поле (т.е. не существующее физически в таблице). FROM -- собираем общую таблицу WHERE -- фильтруем, остается только нужное GROUP BY\ORDER BY [+АГРЕГАТНЫЕ ФУНКЦИИ] SELECT HAVING ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 16:59 |
|
Какой порядок выполнения group by, select, having?
|
|||
---|---|---|---|
#18+
Формально: WITH, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT. Выражения вычисляются в момент теоретичской надобности. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 20:30 |
|
Какой порядок выполнения group by, select, having?
|
|||
---|---|---|---|
#18+
Akina, от субд зависит, когда выполняется SELECT? Сейчас сделал тесты, получил следующее: ORDER BY выполняется и с полем в SELECT, и с полем, которое в SELECT не указано HAVING можно выполнить, только если поле есть в SELECT ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 11:45 |
|
Какой порядок выполнения group by, select, having?
|
|||
---|---|---|---|
#18+
летатель космосаHAVING можно выполнить, только если поле есть в SELECTЕрунда. HAVING требует, чтобы указанное поле или выражение имело смысл после операции группировки. Например, совершенно легитимно Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 11:51 |
|
|
start [/forum/topic.php?fid=47&gotonew=1&tid=1828933]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
128ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 513ms |
0 / 0 |