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 если это не столбец в вашей таблице.

Другие вопросы по тегам