【发布时间】:2021-04-18 17:32:08
【问题描述】:
由于逻辑执行顺序,我认为在 WHERE 子句和 JOIN ON 子句中使用别名是非法的。这两个子句在 SELECT 之前,所以没有定义别名。
但是,我最近阅读了两个代码,它们在这两个子句中有一个别名,它们运行没有问题。
SELECT w1.id
FROM weather AS w1
JOIN weather AS w2 ON DATEDIFF(w1.recordDate, w2.recordDate) = 1
AND w1.Temperature > w2.Temperature;
这是在 leetcode 上,在 JOIN 子句中使用别名。
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName = 'Around the Horn'
AND c.CustomerID = o.CustomerID;
这是在 W3school 上,在 Where 子句中使用别名。
现在,我对使用别名的限制感到困惑。有什么想法吗?
【问题讨论】:
-
这些都不使用别名。他们都在使用合格的列引用。
标签: sql join where-clause alias