SQL GROUP BY 1 2 3 и порядок выполнения SQL - PullRequest
0 голосов
/ 28 ноября 2018

Это может быть глупый вопрос, но я действительно запутался.Таким образом, согласно Порядку выполнения 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 ]

0 голосов
/ 28 ноября 2018

Насколько я понимаю, это порядковая запись и чтобы оператор SELECT прошел проверку синтаксиса, вы должны по крайней мере выбрать столбец.Таким образом, 1 указывает на первый столбец в операторе выбора, поскольку он знает, что вы выбрали столбец.

РЕДАКТИРОВАТЬ:

Я вижу, что люди говорят, что вы не можете использовать порядковые обозначения, и они правыесли вы используете SQL Server.Вы можете использовать его в MySQL, хотя.

0 голосов
/ 28 ноября 2018

select a,b,c from emp group by 1,2,3.Сначала он будет группироваться по столбцам a, затем b и c.Он работает на основе столбца после оператора select.

0 голосов
/ 28 ноября 2018

Каждое выражение GROUP BY должно содержать хотя бы один столбец, который не является внешней ссылкой.Вы не можете группировать по 1, если это не столбец в вашей таблице.

...