SQL GROUP BY 1 2 3 和 SQL 执行顺序

SQL GROUP BY 1 2 3 and SQL Order of Execution

这可能是个愚蠢的问题,但我真的很困惑。所以根据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

每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。如果 1 不是您的 table.

中的列,则不能按 1 分组

我的理解是因为它是 序数表示法 并且要使 SELECT 语句通过语法验证,您必须至少 select 编辑一列。所以 1 表示 select 语句中的第一列,因为它知道您有一个列 selected.

编辑:

我看到有人说您不能使用序号表示法,如果您使用的是 SQL 服务器,他们是对的。不过您可以在 MySQL 中使用它。

select a,b,c from emp group by 1,2,3。首先它将按列 a 然后按 b 和 c 分组。它基于 select 语句后的列。