以下代码和语句来自大学的一项任务。为什么在此语法中使用a和b?
为已保存送货单的客户返回姓名和名字。
选择名称,来自国家/地区的洲作为百分比> 50 AND区域> =(从来自国家/地区的SELECT MAX(区域)中选择b,其中a.Continent = b。大陆和b。百分比> 50)按名称排序;
从存在位置a的客户那里选择名称和名字(从地址b位置中选择SELECT CustomerDeliveryAddress到b.CustomerDeliveryAddress = a.CustomerID)
答案 0 :(得分:0)
因为编写查询的人对编写好的查询不了解。需要表别名。这是因为您需要将(相关的)子查询中的列引用与外部查询的列引用区分开。
但是,强烈建议您使用有意义的表别名-这意味着表的缩写。您还应该限定所有列名称。
因此,第一个查询应该看起来像这样:
SELECT c.Name, c.Continent
FROM Country c
WHERE c.Percentage > 50 AND
c.Area >= (SELECT MAX(c2.Area)
FROM Country c2
WHERE c2.Continent = c.Continent AND
-----------------------^ this is the correlation clause that references columns in both the inner and outer queries
c2.Percentage > 50
)
ORDER BY Name;
在此语法中使用>=
也是极具误导性的,因为您正在查看最大值。