MySQL JOIN报#1066 Not unique table/alias错误如何添加表别名?
报错原因
1066报错确实是因为JOIN语句两侧都使用了order details表却没有指定区分别名导致的,数据库无法识别关联条件、查询字段中引用的order details到底指向JOIN左侧还是右侧的表。
别名添加位置
需要分别给两张同表加不同别名,所有引用表的位置都要替换为对应别名:
FROM子句后的第一个order details后加别名,例如od1INNER JOIN后的第二个order details后加另一个不同别名,例如od2
自关联场景修正示例(确认需要关联两张order details表时使用)
注意你原语句查询了Orders表的字段,当前关联逻辑中没有引入Orders表,所以额外补充了Orders表的关联逻辑:
SELECT od1.ProductID, od1.UnitPrice, o.orderdate, o.RequiredDate FROM `order details` AS od1 INNER JOIN `order details` AS od2 ON od1.OrderID = od2.OrderID -- 关联Orders表获取订单日期字段 INNER JOIN Orders AS o ON od1.OrderID = o.OrderID
常见手误修正(本来要关联Orders表写错成order details时使用)
如果不需要自关联order details,仅需把INNER JOIN后的表名改为Orders即可,不需要加别名:
SELECT `order details`.ProductID, `order details`.`UnitPrice`, `Orders`.`orderdate`, `Orders`.`RequiredDate` FROM `order details` INNER JOIN `Orders` ON `order details`.`OrderID` = `Orders`.`OrderID`
内容的提问来源于stack exchange,提问作者Cody Raspien
相关产品推荐
相关产品推荐

