我很难搞清楚这个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'不存在
现在我不知道这是否是获得我答案的正确途径我只是开始使用这个工具而且我也在阅读这本书现代数据库管理第十一版也许我只是不理解这部分爱好。
答案 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
与同一字段相关联。