繁体   English   中英

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

[英]How to solve the ambiguity error 1052 in mySql SELECT?

我正在制作一个 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';

同样在选择中提供适当的 Table.Column 映射。 如果产品表中有名称字段,请在选择中包含 Products.name

每当您连接表时,您可能会在多个表中发现相同的列名。 SQL 引擎不知道选择哪个。所以为了区分你需要指定正确的映射。 您还可以指定简单的别名而不是完整的表名称。

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

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

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';

我猜测列来自哪些表,因此限定名称可能不正确(您的问题未提供此信息)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM