【问题标题】:Updating and Selecting from the same table in MySQL从 MySQL 中的同一个表中更新和选择
【发布时间】:2021-05-20 19:10:59
【问题描述】:

看看我的 sqlfiddle:

http://sqlfiddle.com/#!9/60ffc4(已编辑)

我正在尝试执行的代码:

UPDATE inventory SET 
    product_name = CONCAT((SELECT name FROM products_and_packaging 
    WHERE product_id = (SELECT product_id FROM inventory 
    WHERE inventory_id = 196)), ' 100g Bunch')
WHERE inventory_id = 196

我正在寻找的结果是将库存表中的product_name 从 NULL 重命名为“Flowers 100g Bunch”,其中 product_id = 196。

我收到 #1093 错误(您不能在 FROM 子句中指定目标表 'inventory' 进行更新)

注意这里有类似问题的答案: You can't specify target table for update in FROM clause

MySQL Error 1093 - Can't specify target table for update in FROM clause

但是,由于建议的内部连接,我尝试应用这些解决方案并提出完全相同的错误。任何指向正确方向的指针都会很棒。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您不需要嵌套子查询。只需按照链接问题所示连接两个表即可。

    UPDATE inventory AS i
    JOIN products_and_packaging AS pp ON pp.product_id = i.product_id
    SET i.product_name = CONCAT(pp.name, ' 100g Bunch')
    WHERE i.inventory_id = 196
    

    DEMO

    【讨论】:

    • 啊,多么无缝的解决方案!...这完美。我还在 WHERE 子句中使用了这个解决方案,而不是一个全新的子查询!
    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2014-09-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    相关资源
    最近更新 更多