【发布时间】:2011-11-15 14:28:51
【问题描述】:
有人向我发送了一个 SQL 查询,其中 GROUP BY 子句由以下语句组成:GROUP BY 1。
这一定是笔误吧?没有为列指定别名 1。这意味着什么?我可以假设这一定是一个错字吗?
【问题讨论】:
-
不是错字,是结果集的第一列
-
请注意,此语法是不可移植的。它在 mysql 以外的数据库上的行为会有所不同。例如,在 Oracle 中,它被视为常量。
-
@RussellReed 是的。不幸的是(因为使用别名有时非常有帮助)ansi sql 不允许按列序号分组。原因是 group by 发生在投影之前。但是.. 当我们用数十行分组表达式时.. 我们最终会在最终的 sql 语句中得到.. mutiples 数十行。