我正在使用InnoDB版本的MySQL world 数据库(可用here),我正在尝试获取南美及其首都的国家列表。在我看来,查询应该如下所示:
SELECT `Country.Name` as `CountryName`, `City.Name` as `CityName`
FROM `Country`, `City`
WHERE `Continent` = 'South America' AND `ID` = `Capital`;
但即使表#1054 - Unknown column 'Country.Name' in 'field list'
确实包含字段Country
,该错误也会Name
。
为什么MySQL找不到我想要的字段?如何更改查询以使其找到它们?
如果我需要为您提供更多信息以便能够帮助我,请告诉我。
答案 0 :(得分:2)
如果您引用标识符,请不要使用反引号包围内部点。
SELECT
`Country`.`Name` AS CountryName,
`City`.`Name` AS CityName
如果引用内部点,则会假定它位于列名称内,而不是表名和列名之间的分隔符 - 您有一个名为Name
的列,但不是< em>列名为Country.Name
。但是,在这种情况下,没有必要引用任何标识符,因为它们都不是MySQL reserved keywords。
答案 1 :(得分:2)
尝试修改后面的刻度。
SELECT
`Country`.`Name` as `CountryName`,
`City`.`Name` as `CityName`
FROM `Country`, `City`
WHERE `Continent` = 'South America' AND `ID` = 'Capital';
不要将它们放在整个table.column周围,而是将它们分别放在它们之间。
国会大厦也应该是单引号而不是后退。
答案 2 :(得分:0)
这似乎是一个语法问题:
请尝试使用此代码:
`Country`.`Name`
country.name(以刻度表示)将是您的后面的
字段的名称`country`.`name`