小编典典

SQL - 在 Group By 中使用别名

all

只是对 SQL 语法感到好奇。所以如果我有

SELECT 
 itemName as ItemName,
 substring(itemName, 1,1) as FirstLetter,
 Count(itemName)
FROM table1
GROUP BY itemName, FirstLetter

这是不正确的,因为

GROUP BY itemName, FirstLetter

真的应该

GROUP BY itemName, substring(itemName, 1,1)

但是为什么我们不能为了方便而简单地使用前者呢?


阅读 60

收藏
2022-08-02

共1个答案

小编典典

SQL 的实现就像按以下顺序执行查询一样:

  1. FROM clause
  2. WHERE clause
  3. GROUP BY clause
  4. HAVING clause
  5. SELECT clause
  6. ORDER BY clause

对于大多数关系数据库系统,此顺序解释了哪些名称(列或别名)是有效的,因为它们必须在前面的步骤中引入。

因此,在 Oracle 和 SQL Server 中,不能在 SELECT 子句中定义的 GROUP BY 子句中使用术语,因为 GROUP BY 在
SELECT 子句之前执行。

但也有例外:MySQL 和 Postgres 似乎有额外的智能允许它。

2022-08-02