SELECT within SELECT Tutorial/zh
world表:
name 国家名
continent 洲
area 面积
population 人口
gdp 国民生产总值
开始查询
子查询
1、列出每个国家的名字 name,当中人口 population 是高于俄罗斯’Russia’的人口。
SELECT name FROM world
WHERE population >
(SELECT population FROM world
WHERE name = 'Russia')
2、列出欧州人均GDP高于英国’United Kingdom’的国家。
SELECT name
FROM world
WHERE continent = 'Europe'
AND gdp/population > (SELECT gdp/population FROM world
WHERE name = 'United Kingdom')
3、在阿根廷Argentina 及 澳大利亚 Australia所在的洲中,列出国家名字 name 及洲 continent 。按国家名字顺序排序。
SELECT name, continent
FROM world
WHERE continent IN (SELECT continent FROM world
WHERE name IN ('Argentina', 'Australia'))
ORDER BY name
4、哪一个国家的人口比加拿大Canada的多,但比波兰Poland的少?列出国家名字name和人口population 。
SELECT name, population
FROM world
WHERE population > (SELECT population FROM world WHERE name = 'Canada')
AND population < (SELECT population FROM world WHERE name = 'Poland')
5、Germany德国(人口8000万),在Europe欧洲国家中人口最多。Austria奥地利(人口850万)拥有德国总人口的11%。
显示欧洲的国家名称name和每个国家的人口population。以德国人口的百分比作人口显示。
SELECT name, concat(ROUND(population/(SELECT population
FROM world WHERE name = 'Germany')*100), '%')
FROM world
WHERE continent = 'Europe'
6、哪些国家的GDP比Europe欧洲的全部国家都要高? [只需列出 name 。] (有些国家的记录中,GDP是NULL)
SELECT name
FROM world
WHERE gdp > ALL(SELECT gdp FROM world WHERE continent = 'Europe'
AND gdp > 0)
7、在每一个洲中找出最大面积的国家,列出洲份 continent, 国家名字 name 及面积area。 (有些国家的记录中,area是NULL)
SELECT continent, name, area FROM world x
WHERE area >= ALL
(SELECT area FROM world y
WHERE y.continent = x.continent
AND area > 0)
8、列出洲名称,和每个洲中国家名字按字母顺序排首位的国家名。(即每洲只列一国)
SELECT continent, name FROM world x
WHERE name <= ALL(SELECT name FROM world y
WHERE y.continent = x.continent
ORDER BY name)
9、找出洲中全部国家都有少于或等于 25000000 人口. 在这些洲中,列出国家名字name,continent 洲和population人口。
SELECT name, continent, population
FROM world x
WHERE 25000000 >= ALL(SELECT population FROM world y
WHERE y.continent = x.continent)
10、有些国家的人口是同洲的所有其他国家的3倍或以上。列出国家名字name 和 洲 continent。
SELECT name, continent FROM world x
WHERE population / 3 >= ALL(SELECT population FROM world y
WHERE y.continent = x.continent
AND x.name != y.name)