MySQL别名问题

ice*_*l89 3 mysql sql alias mysql-error-1054

我想知道为什么会失败

mysql> SELECT Continent C, Name, SurfaceArea
    -> FROM Country
    -> WHERE SurfaceArea = (
    -> SELECT MAX(SurfaceArea)
    -> FROM Country
    -> WHERE Continent = C);
ERROR 1054 (42S22): Unknown column 'C' in 'where clause'

它是一个样本练习的认证指南提供的答案.

顺便说一句,换个别名什么时候我必须使用AS?是可选的吗?

Roe*_*ler 8

为了执行相关子查询,您需要外部的别名.您为外部表的字段创建了别名.看看下面的更正代码,它具有子查询中引用的表(Cou)的别名(请注意,字段别名不是必需的,因此我将其删除.如果您愿意,将其添加回来没有任何害处) :

SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea = 
(
    SELECT MAX(SurfaceArea)
    FROM Country
    WHERE Continent = Cou.Continent
);
Run Code Online (Sandbox Code Playgroud)

关于AS的使用,它是可选的.例如,在上面的查询中,您可以编写Country AS Cou,它将是相同的.