如何解决mySql SELECT中的歧义错误1052



我正在进行mySql SELECT:

SELECT name, description, brand, Providers.name, Categories.name, sellingPrice, quantity
FROM Products 
INNER JOIN Providers ON Products.idProvider = Providers.id
INNER JOIN Categories ON Products.idCategory = Categories.id
WHERE category = 'tools';

但我变成了这个错误:

Error Code: 1052. Column 'name' in field list is ambiguous

即使我指定了"Table.column"(Providers.name,Categories.name(.

请帮忙??

您一开始是否尝试删除名称字段?试试这个代码

SELECT description, brand, Providers.name, Categories.name, sellingPrice, quantity
FROM Products 
INNER JOIN Providers ON Products.idProvider = Providers.id
INNER JOIN Categories ON Products.idCategory = Categories.id
WHERE category = 'tools';

类似地,在select中提供适当的Table.Column映射。如果您在Products表中有一个名称字段,请在select 中包含Products.name

无论何时联接表,都可能在多个表中找到相同的列名。SQL引擎不知道该选择哪个。因此,为了进行区分,您需要指定适当的映射。也可以指定简单的Alias名称,而不是完整的表名称。

简单规则:在编写查询时限定所有列名。总是

如果给表提供合理的别名,这很容易。所以你的查询应该是这样的:

SELECT p.name, p.description, p.brand, pr.name, c.name, p.sellingPrice, p.quantity
FROM Products p JOIN
Providers pr
ON p.idProvider = pr.id JOIN
Categories c
ON p.idCategory = c.id
WHERE c.category = 'tools';

我猜这些列来自哪些表,所以限定名称可能不正确(您的问题没有提供这些信息(。

相关内容

  • 没有找到相关文章

最新更新