mysql - 更新包含子查询的两个表时出现错误代码 1052

标签 mysql sql

我在使用同一查询中的子查询更新两个表时遇到问题。这是类(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.priceshipment.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/

相关文章:

c# - 数据库未更新

sql - 插入选择继续错误

php - mySQL 在数组中搜索 id

MySQL 根据匹配百分比或限制检索结果

mysql - #1005 - 无法创建表 'disertation.#sql-d38_40'(错误号 : 150)

c# - 如何按多个字段分组并获取另一个字段的计数

php - 选择第一个字符是数字的地方

php - 添加另一个选择

mysql - MySQL 会为 : 'user' @'' 形式的用户分配什么默认权限

php - 使用 PHP 运行 .sql 文件