我想知道为什么这会失败
mysql> 选择 C 洲,名称,SurfaceArea - >来自国家 -> 表面面积 = ( -> 选择最大(表面面积) - >来自国家 -> 大陆 = C); 错误 1054 (42S22):“where 子句”中的未知列“C”
它是认证指南为一些示例练习提供的答案。
顺便说一句,对于别名,我什么时候必须使用 AS?是可选的吗?
我想知道为什么这会失败
mysql> 选择 C 洲,名称,SurfaceArea - >来自国家 -> 表面面积 = ( -> 选择最大(表面面积) - >来自国家 -> 大陆 = C); 错误 1054 (42S22):“where 子句”中的未知列“C”
它是认证指南为一些示例练习提供的答案。
顺便说一句,对于别名,我什么时候必须使用 AS?是可选的吗?
为了执行相关子查询,您需要外表的别名。您为外部表的字段创建了别名。看看下面更正后的代码,它有一个在子查询中引用的表 (Cou) 的别名(请注意,字段别名不是必需的,所以我将其删除。如果您愿意,可以将其添加回来) :
SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea =
(
SELECT MAX(SurfaceArea)
FROM Country
WHERE Continent = Cou.Continent
);
关于AS的使用,它是可选的。例如,在上面的查询中你可以写Country AS Cou
,它是一样的。
我假设它与您的 MySQL 版本有关。我刚刚测试了完全相同的查询并且它成功了(至少在语法上)。这就是 MySQL 5.0.45。
如果 MySQL 版本不是问题,您也可以尝试重新输入查询。这可能听起来很傻,但有时无法打印的字符可能会在输入或复制/粘贴时出现在您的查询中(我正在考虑从 PDF 复制/粘贴,特别是因为它来自指南)。
而且,是的,AS
对于别名是可选的。