帮助我理解这一点:在问题3a的sqlzoo教程(“查找每个地区中最大的国家/地区”)中,为什么要附加'AND population>嵌套的SELECT语句的0'是否正确?
答案 0 :(得分:2)
原因是因为:
AND population > 0
...正在过滤掉“Europe”区域的空行,名称为“Vatican”,这会使以下内容变得复杂:
WHERE population >= ALL (SELECT population
FROM ...)
...因为NULL不是一个值,所以俄罗斯的排名不合适。 ALL运算符要求您比较的值大于或等于 ALL 从子查询返回的值,当存在NULL时,这种情况永远不会发生。
我的查询将是:
SELECT region, name, population
FROM bbc x
WHERE population = (SELECT MAX(population)
FROM bbc y
WHERE y.region = x.region)
...或者,使用JOIN:
SELECT x.region, x.name, x.population
FROM bbc x
JOIN (SELECT y.region,
MAX(y.population) AS max_pop
FROM bbc y
GROUP BY y.region) z ON z.region = x.region
AND z.max_pop = x.population
答案 1 :(得分:0)
不,不。最大的国家拥有先验非零人口。
就像检查最大的书中是否有任何页面一样。