我正在学习nested select
,第二秒钟我遇到了AS
运算符的问题(即嵌套的select
)。
请查看下表(已截断):
+-------------+-----------+---------+------------+--------------+
| name | continent | area | population | gdp |
+-------------+-----------+---------+------------+--------------+
| Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
| Albania | Europe | 28748 | 2831741 | 12960000000 |
| Algeria | Africa | 2381741 | 37100000 | 188681000000 |
| Andorra | Europe | 468 | 78115 | 3712000000 |
| Angola | Africa | 1246700 | 20609294 | 100990000000 |
+-------------+-----------+---------+------------+--------------+
目的是显示欧洲人均GDP高于英国的国家。(人均GDP是GDP /人口)。
以下查询在语法上是正确的,但是由于它选择了gdp
而不是gdp/population
,因此不会给出正确的结果:
SELECT name
FROM world
WHERE gdp/population >
(SELECT gdp
FROM world
WHERE name = 'United Kingdom')
AND continent = 'Europe';
解决此问题的一种解决方案是使用gdp/population
而不是gdp
中的nested select
,但是所得到的查询在语法上是不正确的。为什么?我使用MariaDB,但我希望查询不依赖DBMS提供程序。
SELECT name
FROM world
WHERE gdp/population >
(SELECT gdp AS gdp/population
FROM world
WHERE name = 'United Kingdom')
AND continent = 'Europe';
答案 0 :(得分:1)
array_combine()
的语法是
AS
因此您绕错了方向,并且您定义的别名包含非法字符(SELECT expression AS ALIAS
)。在这种情况下,不需要别名,因此您只需执行以下操作即可:
/