Faktyczne wykonanie sprawozdań MySQL jest nieco kłopotliwe. Jednak standard określa kolejność interpretacji elementów w zapytaniu. To jest w zasadzie w porządku, że można określić, chociaż myślę HAVING
i GROUP BY
może przyjść po SELECT
:
FROM
klauzuli
WHERE
klauzula
SELECT
klauzula
GROUP BY
klauzula
HAVING
klauzula
ORDER BY
zdanie
Jest to ważne dla zrozumienia sposobu analizowania zapytań. Nie można użyć aliasu kolumny zdefiniowanego na przykład w klauzuli SELECT
w klauzuli WHERE
, ponieważ WHERE
jest analizowany przed SELECT
. Z drugiej strony taki alias może znajdować się w klauzuli ORDER BY
.
Co do rzeczywistego wykonania, to tak naprawdę pozostawia się optymalizatorowi. Na przykład:
. . .
GROUP BY a, b, c
ORDER BY NULL
i
. . .
GROUP BY a, b, c
ORDER BY a, b, c
oba mają wpływ ORDER BY
nie są wykonywane w ogóle - i tak nie wykonywane po GROUP BY
(w pierwszym przypadku efekt jest usunięcie sortowanie od GROUP BY
, aw drugim efektem jest nie robić nic więcej niż GROUP BY
już robi).
wybierz i grupy o nieco zachodzą na siebie, w szczególności gdy stosowane są funkcje kruszywa. nie można tak naprawdę uporządkować ich w porządku. –
To pytanie wydaje się być nie na temat, ponieważ wydaje się brakować badań. – Strawberry
Nie mogłem znaleźć nigdzie indziej, gdzie ten temat jest szczegółowo omówiony. – ericsicons