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

问题描述 投票:1回答:3

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

sql group-by operator-precedence
3个回答
1
投票

我的理解是因为它是序数表示法,并且对于SELECT语句通过语法验证,您必须至少选择一列。所以1表示select语句中的第一列,因为它知道你选择了一列。

编辑:

我看到有人说你不能使用序数表示法,如果你使用的是SQL Server,它们是正确的。你可以在MySQL中使用它。


0
投票

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


-1
投票

每个GROUP BY表达式必须包含至少一个不是外部引用的列。如果1不是表格中的列,则无法对其进行分组。

© www.soinside.com 2019 - 2024. All rights reserved.