不熟悉SQL语法

时间:2019-05-13 21:26:37

标签: mysql sql

以下代码和语句来自大学的一项任务。为什么在此语法中使用a和b?

  1. 编写一条SQL语句:在“国家/地区”表中,找到国家的排序列表,每个国家/地区在其大陆上最大。大陆是一个国家大部分地区所在的大陆。
  2. 为已保存送货单的客户返回姓名和名字。

  3. 选择名称,来自国家/地区的洲作为百分比> 50 AND区域> =(从来自国家/地区的SELECT MAX(区域)中选择b,其中a.Continent = b。大陆和b。百分比> 50)按名称排序;

  4. 从存在位置a的客户那里选择名称和名字(从地址b位置中选择SELECT CustomerDeliveryAddress到b.CustomerDeliveryAddress = a.CustomerID)

1 个答案:

答案 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;

在此语法中使用>=也是极具误导性的,因为您正在查看最大值。

相关问题