将MYSQL查询转换为DB2查询

时间:2013-02-07 14:42:58

标签: mysql sql db2

我的查询在我的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

3 个答案:

答案 0 :(得分: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来演示。

祝你好运。

答案 1 :(得分: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
   )

答案 2 :(得分:-1)

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

如果不是这样,请尝试指定max(population)。它是y.population,或者是x.population