在我见过的每一个操作顺序图中,
SELECT
基本上都在最后,并且总是在GROUP BY
之后。然而,我发现令人困惑的是,在下面的 SQL 语句中,我们在 SELECT
语句中声明了可以在 GROUP BY
中引用的别名,即使 GROUP BY
发生在 SELECT
之前。这怎么可能?
SELECT SUM(amount) as 'sum_amt', MONTH(payment_date) as 'm_date'
FROM payment
GROUP BY m_date
这是允许的,因为 SQL 解析查询的方式。
当 SQL 解析 SELECT 子句时,它会识别别名。尽管实际计算(如 SUM(amount))是稍后按照运算的逻辑顺序执行的,但别名是预先识别的。这允许您在 GROUP BY 子句中使用 m_date。