我有一张桌子,名字叫“世界”。该表按以下顺序排列:名称、大陆、地区、人口和国内生产总值。我想要写的问题是下一个问题:一些国家的人口是其邻国(同一大陆)的三倍以上。给这些国家和大陆。
我的查询如下:
SELECT
name, continent
FROM
world as x
WHERE
x.population/3 > ALL (SELECT population
FROM world as y
WHERE x.continent = y.continent)
但它不像它应该做的那样起作用。可能的问题是什么?
发布于 2015-02-27 11:19:22
就我个人而言,我发现any
、all
和some
关键字的使用有点难理解。当查询显式地使用min()
和max()
时,我发现解释这样的查询更容易:
SELECT w.name, w.continent
FROM world w
WHERE w.population > (SELECT 3 * MAX(w2.population)
FROM world w2
WHERE w2.continent = w.continent AND
w2.name <> w.name
);
此外,在子查询中使用min()
和max()
使其在有子查询可能返回的NULL
值时更加直观。
注意,我为每个表都包含了表别名,并使用它们来限定列名。
发布于 2015-02-27 13:08:12
发布于 2018-06-21 10:22:39
SELECT name, continent FROM world x
WHERE population>ALL (SELECT 3*population FROM world y
WHERE x.continent=y.continent
AND x.name<>y.name
AND population>0)
https://stackoverflow.com/questions/28763696
复制相似问题