好的,这一个(3A;与设置回答样本问题)得到了我抓我的头:

  

<强> BBC(名称,区域,地区,人口,GDP)结果    3A。找到最大的国家,每个地区:

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

我明白的“WHERE y.region = x.region”的概念时,我想它在db发动机而言遍历的表项,并与当前y.region每个x.region(在嵌套SELECT)匹配...但跆拳道是“AND population > 0”呢?这不是没有它的一个正确的答案,但我看不出怎么不...

有帮助吗?

解决方案

这子句是有只是因为在欧洲表,其具有在人群中柱NULL一个条目(梵)。下面的作品也是我认为是更容易理解:

SELECT region, name, population
  FROM bbc x
 WHERE population >= ALL
    (SELECT population
       FROM bbc y
      WHERE y.region = x.region
        AND population IS NOT NULL)

MySQL文档为ALL子查询的,有一个有帮助的注释(强调他们):

  

在一般情况下,含的 NULL 值的表空表是 “边缘情况”。当编写子查询代码,总是考虑是否采取了这两种可能性考虑在内。

其他提示

我在这里猜测它。

如果有什么人口为空所有的特定区域的记录?

编辑:这可以被认为是一种安全网的忽视人口(不是真实的生活场景)-ve值

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top