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