2016-04-14 62 views
1

我试图查询大陆所有城市的人口总和,其中大陆是'亚洲'。 这两个表城市和国家有:简单的内部连接不工作

city - id, countrycode, name population 
country - code, name, continent, population 

这里是我的查询

SELECT SUM(POPULATION) FROM COUNTRY CITY 
JOIN ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE CONTINENT = "Asia"; 

这是行不通的。我究竟做错了什么。我是SQL新手。

回答

3

它不起作用,因为你写它的方式CITY被解释为COUNTRY的表别名。此外,它看起来每个表中都有一个POPULATION列,因此您需要对其进行消歧。让我重写查询,为您提供:

SELECT SUM(CITY.POPULATION) 
FROM COUNTRY 
JOIN CITY 
ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE COUNTRY.CONTINENT = "Asia"; 
+0

是这个工作。谢谢。现在明白了。 – Zeus

+0

此外,“亚洲”没有工作,“亚洲”为什么工作。我是SQL新手。两者都是VARCHAR2 – Zeus

+0

嗯。在MySQL中,单引号和双引号都适用于我。你在使用MySQL以外的东西吗? – Asaph

1

MySQL JOIN syntax manual

SELECT SUM(COUNTRY.POPULATION) 
FROM COUNTRY 
JOIN CITY 
ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE CONTINENT = "Asia"; 
+0

当我运行此,该错误消息我得到的是,'SELECT SUM(人口)在1号线 * ERROR: ORA-00918:列定义的含糊' – Zeus

+0

@Zeus参见[我的回答(HTTP://计算器.com/a/36636048/166339),它解决了这个错误信息。 – Asaph

+0

现在固定,感谢@Zeus –

1

的连接需要两个表名之间走:

SELECT SUM(CITY.POPULATION) FROM COUNTRY INNER JOIN CITY 
ON COUNTRY.CODE = CITY.COUNTRYCODE 
WHERE CONTINENT = "Asia"; 
+0

我会在1号线运行这个'SELECT SUM(人口) * 错误以下错误: ORA-00918:列定义的含糊' – Zeus

+0

@Zeus参见[我的回答(HTTP: //stackoverflow.com/a/36636048/166339)它可以解决这个错误信息。 – Asaph