SQL GROUP BY 1 2 3 и порядок выполнения SQL
Это может быть глупый вопрос, но я действительно смущен. Таким образом, в соответствии с порядком выполнения SQL-запросов, GROUP BY
пункт будет выполнен до SELECT
пункт. Однако это позволяет сделать что-то вроде:
SELECT field_1, SUM(field_2) FROM myTable GROUP BY 1
Мое замешательство в том, что если GROUP BY
оговорка происходит раньше SELECT
В этом сценарии я представил, как SQL знает, что 1
является? Работает с ORDER BY
пункт, и это имеет смысл для меня, потому что ORDER BY
пункт происходит после SELECT
,
Кто-нибудь может мне помочь? Заранее спасибо!
https://www.periscopedata.com/blog/sql-query-order-of-operations
3 ответа
Насколько я понимаю, это порядковая запись, и для того, чтобы оператор SELECT прошел проверку синтаксиса, вы должны как минимум выбрать столбец. Таким образом, 1 указывает на первый столбец в операторе выбора, так как он знает, что выбран столбец.
РЕДАКТИРОВАТЬ:
Я вижу людей, которые говорят, что вы не можете использовать порядковые обозначения, и они правы, если вы используете SQL Server. Вы можете использовать его в MySQL, хотя.
select a,b,c from emp group by 1,2,3
, Сначала он будет сгруппирован по столбцам a, затем b и c. Он работает на основе столбца после оператора select.
Каждый GROUP BY
выражение должно содержать хотя бы один столбец, который не является внешней ссылкой. Вы не можете группировать по 1
если это не столбец в вашей таблице.