林混淆的名称为什么不能SQL ZOO列表中的每个大洲和国家的自带首字母顺序排列
Select x.continent, x.name
From world x
Where x.name <= ALL (select y.name from world y where x.name=y.name)
ORDER BY name
谁能请给我解释一下为什么它必须是x.continent = y.continent而不是x.name = y.name?
林混淆的名称为什么不能SQL ZOO列表中的每个大洲和国家的自带首字母顺序排列
Select x.continent, x.name
From world x
Where x.name <= ALL (select y.name from world y where x.name=y.name)
ORDER BY name
谁能请给我解释一下为什么它必须是x.continent = y.continent而不是x.name = y.name?
x.name=y.name
你是从X与国名从y中比较国名,如果这两种情况下具有相同的国名。这基本上只会返回你的全表x。
你想使用x.continent=y.continent
,因为如果你只想将来自x的实例的国家名称与来自y的实例的国家名称比较,如果它们共享相同的大陆。
让我一步用一个例子说明了这一步: 在这里,我们有一个表的世界,我有一些数据填充:
world:
Select x.continent, x.name
From world x
ORDER BY name
continent name
Asia Afghanistan
Europe Albania
Africa Algeria
Europe Andorra
Africa Angola
SouthAmerica Bolivia
SouthAmerica Brazil
Europe Hungary
Asia Japan
Africa Nigeria
SouthAmerica Peru
Asia Taiwan
,当你执行这个查询,而无需在子查询的WHERE子句:
Select x.continent, x.name
From world x
Where x.name <= ALL (select y.name from world y)
ORDER BY name
你得到这个
continent name
Asia Afghanistan
这是BEC使用where子句过滤除了一个国家以外的所有国家
where x.name <= (Afghanistan,Taiwan,Japan,
Albania,Hungary,Algeria,Nigeria,Andorra,
Angola,Bolivia,Peru,Brazil)
也就是,按字母顺序排列的是阿富汗的国名。
,但由于我们想要得到的第一个国家每个大洲我们将增加x.continent=y.continent
我们的子查询
Select x.continent, x.name
From world x
Where x.name <= ALL (select y.name from world y where x.continent=y.continent)
ORDER BY name
什么是下面发生的事情是,我们现在只能从比较实例的国名x与来自y的实例的国名如果他们共享相同的大陆。因此,使用大陆地区的,例如:
Japen被过滤掉,因为 Japan <= All(Afghanistan,Taiwan,Japan)
是假的,因为日本不小于或等于阿富汗(A自带Ĵ之前)
台湾被过滤掉,因为 Taiwan <= All(Afghanistan,Taiwan,Japan)
是假的,因为台湾不亚于阿富汗。
阿富汗不会被过滤掉,因为 Afghanistan <= All(Afghanistan,Taiwan,Japan)
是真实的,因为阿富汗是等于阿富汗
但是,如果你在你的子查询中使用x.name=y.name
那么你是各个国家基本上是与自己进行比较,他们都将获得包括在你的最终结果集,因为所有的国家名称等于它自己的国家名称。
我希望这个帮助,并欢迎堆栈溢出。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。“
@O KOO谢谢。感谢您的解释:D – teamking12
您需要为您的问题提供更多背景。你试图达到什么样的结果使得“它”必须是“x.continent = y.continent”?是因为当使用'x.name = y.name'时,你没有得到你想要的结果?还是因为你收到错误?请具体说明你的问题。 –
@ O.KOO如果我使用了x.name = y.name,那么答案会不正确。 – teamking12
那么,你想要的答案/结果是什么? –