我在使用同一查询中的子查询更新两个表时遇到问题。这是类(class)项目的一部分,它必须包含这两个陈述。我了解子查询的工作原理,并且我能够立即更新两个表,但是当我尝试合并子查询时,它仍然给我这个错误。
我在网上查看过,我能找到的唯一解决方法是为字段分配一个别名以避免出现不明确的错误。但是我不确定如何在更新语句中分配它。
update item, shipment
set item.price = 6.99,
shipment.price = 6.99
where price like(
select price
from item
join shipment on item.ship_id = shipment.ship_id
where item_num = "android543");
我知道这是不明确的,我只是不确定如何为值分配别名。
最佳答案
您有两个名为 price
的变量(item.price
和 shipment.price
),而 MySQL 不知道您指的是哪一个到:
where price like(
您需要具体说明您想要哪一个,例如
where item.price like(
请注意,like
,尽管它可能在这种情况下工作(例如4.5 like 4.5
是正确的,但是4.5 like 4.50
不是),用于字符类型变量。在这种情况下,数字运算符(例如 =
或可能的 IN
(如果您希望从子查询中获得多个结果)更合适。
如果我正确理解了您的问题,您可能可以更简单地重写您的查询,如下所示:
update item i
join shipment s on i.ship_id = s.ship_id
set i.price = 6.99,
s.price = 6.99
where i.item_num = "android543"
关于mysql - 更新包含子查询的两个表时出现错误代码 1052,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57642091/