与AS运算符嵌套的select with子句

时间:2018-08-20 09:34:32

标签: sql

我正在学习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';

1 个答案:

答案 0 :(得分:1)

array_combine()的语法是

AS

因此您绕错了方向,并且您定义的别名包含非法字符(SELECT expression AS ALIAS )。在这种情况下,不需要别名,因此您只需执行以下操作即可:

/