0

我有一个在我的 sql 中运行良好的查询,但是相同的查询在 DB2 中给出了错误

这是要求找到每个大陆中最大的国家,显示大陆,名称和人口:然后是查询

SELECT continent, name, population FROM world x
WHERE population = 
  (SELECT max(population) FROM world y
      WHERE y.continent=x.continent
   )

错误是

 [IBM][CLI Driver][DB2/NT] SQL0206N "Y.CONTINENT" is not valid in the context where
it is used. SQLSTATE=42703 (SQL-42S22)

任何人都可以帮助我进行更改以使其在 DB2 中工作

您可以在此处查看答案http://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial如果它在第 6 个示例中工作...将引擎更改为 DB2

4

3 回答 3

0

这是您可以做到的一种方法:

SELECT x.continent, x.name, x.population 
FROM world x
  JOIN 
  (
    SELECT continent, max(population) pop
    FROM world
    GROUP BY continent
  ) y ON x.continent = y.continent AND x.population = y.pop

这是一个用于演示的SQL Fiddle 。

祝你好运。

于 2013-02-07T14:47:45.060 回答
0

DB2 表“world”没有名为“CONTINENT”的列,它被定义为“REGION”。您的查询很好,这是表定义不匹配的问题。以下查询完美运行!

SELECT REGION, name, population FROM world x
WHERE population = 
  (SELECT max(population) FROM world y
      WHERE y.REGION=x.REGION
   )
于 2013-02-07T18:39:07.493 回答
-1

我认为问题出在世界 x 和世界 y 上。如果这些是您的表的名称,请尝试将它们放在方括号 [world x] 和 [world y] 中。

如果不是这种情况,请尝试指定 max(population)。要么是 y.population,要么是 x.population

于 2013-02-07T14:46:42.447 回答