首页 > 解决方案 > MySQL - 更新从查询返回的表中的值?

问题描述

我触发了这个查询,我在其中加入了两个表并输出了两个表的一些列:

SELECT B.option_id, B.product_id, A.title, B.identifier 
FROM `catalog_product_option_title` A JOIN
     `catalog_product_option` B
     ON A.option_id = B.option_id
WHERE A.title = "Breite"

结果:

在此处输入图像描述

现在我需要在结果xyz中的列上输入示例值identifier,无处不在。我会继续手动执行此操作。

如何使用updateMySQL 中的语句来解决这个问题,而无需手动手动更改它?

我试过这样:

UPDATE `catalog_product_option`
SET identifier = 'xyz'
WHERE option_id IN (
    SELECT A.option_id 
    FROM `catalog_product_option_title` A 
    JOIN
         `catalog_product_option` B
         ON A.option_id = B.option_id
    WHERE A.title = "Breite"
)

但是这个查询的模拟返回,这将改变 0 行。

更新

我在没有模拟的情况下调用了 sql,现在我得到了这个错误:

1093 - 表 'catalog_product_option' 被指定两次,既作为 'UPDATE' 的目标,又作为数据的单独源

标签: mysqljoinsql-update

解决方案


你可以试试这样吗?

UPDATE `catalog_product_option`
SET identifier = 'xyz'
WHERE option_id IN (
    SELECT option_id FROM (SELECT A.option_id 
    FROM `catalog_product_option_title` A 
    JOIN
         `catalog_product_option` B
         ON A.option_id = B.option_id
    WHERE A.title = "Breite") as x
)

推荐阅读