所以我试图在其中使用算术进行嵌套选择查询来回答以下问题:"显示欧洲人均GDP大于'英国' "
我尝试使用SQL(MYSQL引擎)
中的附表,如下所示SELECT name FROM world WHERE continent='Europe' AND gdp/population > (SELECT gdp/population FROM world WHERE name='United Kingdom')
+-----------------+-----------+---------+------------+--------------+
| name | continent | area | population | gdp |
+-----------------+-----------+---------+------------+--------------+
| Japan | Asia | 652230 | 25500100 | 20343000000 |
| Albania | Europe | 28748 | 2831741 | 12960000000 |
| Morocco | Africa | 2381741 | 37100000 | 188681000000 |
| Andorra | Europe | 468 | 78115 | 3712000000 |
| Angola | Africa | 1246700 | 20609294 | 100990000000 |
+-----------------+-----------+---------+------------+--------------+
我遇到语法错误 - 写这个的正确方法是什么,我做错了什么?我试图改进SQL。
答案 0 :(得分:2)
变化
name='United Kingdom
到
name='United Kingdom'
答案 1 :(得分:1)
SQL查询结束时缺少引号:
SELECT name
FROM world
WHERE continent='Europe' AND
gdp/population > (SELECT gdp/population FROM world WHERE name='United Kingdom')
^
答案 2 :(得分:0)
您可以使用连接而不是执行子查询,因为RDBMS可以创建更适合您的查询的执行计划,并且可以预测应该加载哪些数据以进行处理并节省时间,这与子查询不同,它将运行所有查询并加载所有数据以进行处理。您的查询将如下所示。
SELECT w1.* from world w1 join world w2
where w2.name ='uk'
and w1.gdp/w1.pop > w2.gdp/w2.pop
and w1.continent='Europe' and w2.continent='Europe'