我不明白自我加入的必要性。有人可以向我解释一下吗?

时间:2014-03-11 07:05:31

标签: sql

 SELECT region, name, population 
 FROM bbc x 
 WHERE population <= ALL (SELECT population FROM bbc y WHERE y.region=x.region AND population>0)

我不明白x和y的逻辑用于同一个表。

2 个答案:

答案 0 :(得分:2)

x和y将成为表bbc的两个不同实例。要在同一查询中列出两次表,必须为表名的至少一个实例提供表别名。此表别名有助于查询处理器确定列是否应显示来自表的右侧或左侧版本的数据。

答案 1 :(得分:1)

此查询返回每个区域中人口最少的所有区域。要在没有自联接的情况下进行此查询,您需要为每个区域执行2次查询: 1。

set @min=Select min(population) from bbc where population>0 and region=@region

2

select region, name, population from bbc where population=@min and region=@region