有麻烦的SQL希望添加临时列

时间:2014-10-04 10:52:15

标签: sql

我很难搞清楚这个SQL语句。我想列出所有城市,他们的人口和城市所在的国家。问题是需要使用2个表。两个表都有标记相同的列,即国家(表)名称(列)和城市(表)名称(列)

SELECT 
   Name, Population, Country.name AS Country
FROM 
   City, Country.name AS Country
WHERE 
   Country.Name = (SELECT Name FROM Country);

我收到此错误

  

错误代码:1146。表' country.name'不存在

现在我不知道这是否是获得我答案的正确途径我只是开始使用这个工具而且我也在阅读这本书现代数据库管理第十一版也许我只是不理解这部分爱好。

2 个答案:

答案 0 :(得分:1)

使用别名和连接,它将使查询更易于阅读和理解。 您需要在City表和Country表之间建立关系才能使事情顺利进行:

SELECT
 ci.Name as City, ci.Population, co.Name as Country
FROM
 City ci
 INNER JOIN Country co ON co.Id = ci.CountryId 

答案 1 :(得分:0)

如果您没有名为Country.name的表,则此行不正确

FROM City, Country.name AS Country

只是因为你应该从表Country中选择一个名为name的列。

使用WHERE子句连接两个表的正确语法是:

SELECT City.Name, City.Population, Country.name AS Country
FROM City, Country
WHERE Country.Name = City.CountryName

假设自您的行

以来表CountryName中有字段City
WHERE Country.Name = (SELECT Name FROM Country);

错误,因为您尝试将来自Name的字段Country与同一字段相关联。