![]() |
1
320
SQL的实现就像查询按以下顺序执行一样:
对于大多数关系数据库系统,此顺序解释了哪些名称(列或别名)是有效的,因为它们必须在上一步中引入。 因此,在Oracle和SQL Server中,不能在SELECT子句中定义的GROUP BY子句中使用术语,因为GROUP BY在SELECT子句之前执行。 但也有例外:MySQL和Postgres似乎有额外的智能性来支持它。 |
![]() |
2
29
您可以始终使用子查询,这样就可以使用别名;当然,请检查性能(db服务器可能会运行相同的子查询,但不会影响验证):
|
![]() |
3
18
至少在PostgreSQL中,您可以在groupby子句中使用resultset中的列号:
当然,如果您以交互方式执行此操作,并且编辑查询以更改结果中列的数量或顺序,那么这将是一个难题。但仍然如此。 |
![]() |
4
15
由于处理的逻辑顺序,SQL Server不允许您引用GROUP BY子句中的别名。GROUPBY子句是在SELECT子句之前处理的,因此在计算GROUPBY子句时,别名是未知的。这也解释了为什么可以在ORDERBY子句中使用别名。 |
![]() |
5
10
我没有回答为什么会这样,只是想通过使用
|
![]() |
6
5
|
![]() |
7
4
有些DBMS允许您使用别名,而不必重复整个表达式。
简单而健壮的替代方法是始终重复groupby子句中的表达式。
|
![]() |
8
1
在SQLite中对视图中的结果进行分组时,请注意使用别名。如果别名与任何基础表(视图)的列名相同,则会得到意外的结果 |
![]() |
9
0
早在那一天,我发现Rdb(Oracle现在支持的以前的DEC产品)允许在GROUPBY中使用列别名。主流Oracle版本11不允许在GROUP BY中使用列别名。不确定Postgresql、SQL Server、MySQL等是否允许。基督教青年会。 |
![]() |
10
0
选择 itemName作为ItemName1, 子字符串(itemName,1,1)作为第一个字母, 从表1 按ItemName1,FirstLetter分组;
|
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |