我的查询的目标是返回国家/地区名称及其国家元首,如果它的headofstate名称以A开头,并且该国家的首都使用嵌套查询的人数超过100,000人。
这是我的问题:
SELECT country.name as country,
(SELECT country.headofstate
from country
where country.headofstate like 'A%')
from country, city
where city.population > 100000;
我尝试将其反转,将其放在where子句等中。我没有得到嵌套查询。我只是得到错误,比如“子查询返回多行”等等。如果有人可以帮助我如何订购它,并解释为什么它需要以某种方式,这将是伟大的。
答案 0 :(得分:17)
如果必须“嵌套”,这将是完成工作的一种方式:
SELECT o.name AS country, o.headofstate
FROM country o
WHERE o.headofstate like 'A%'
AND (
SELECT i.population
FROM city i
WHERE i.id = o.capital
) > 100000
但是JOIN
比相关子查询更有效。可能是,那个曾经给你这项任务的人不能自己加速吗?
答案 1 :(得分:8)
您需要join
这两个表,然后在where
子句中过滤结果:
SELECT country.name as country, country.headofstate
from country
inner join city on city.id = country.capital
where city.population > 100000
and country.headofstate like 'A%'
答案 2 :(得分:2)
我看到它的方式,嵌套查询的唯一位置是在WHERE子句中,例如。
SELECT country.name, country.headofstate
FROM country
WHERE country.headofstate LIKE 'A%' AND
country.id in (SELECT country_id FROM city WHERE population > 100000)
除此之外,我必须同意Adrian:为什么你应该使用嵌套查询?
答案 3 :(得分:1)
以下查询可帮助您实现所需目标。
select scountry, headofstate from data
where data.scountry like 'a%'and ttlppl>=100000