我在另一篇文章中提出了这个问题,该文章有一个基本查询,但在执行以下命令时仍然无法工作,没有任何反应,有什么想法吗?
UPDATE mage_catalog_product_entity_varchar
SET value = (SELECT value WHERE attribute_id = 703)
WHERE attribute_id = 106;
因此,如果 attribute_id 列 = 106,我将更新 value 列中的值,但仅从 attribute_id 列 = 703 的值列更新
以下查询还会更新 attribute_id 106 对应的值字段中的 0
UPDATE mage_catalog_product_entity_varchar
SET value = (SELECT value from mage_catalog_product_entity_varchar
WHERE attribute_id = 703) WHERE attribute_id = 106;
最佳答案
子查询中缺少 From 子句。可以再检查一次吗
UPDATE mage_catalog_product_entity_varchar
SET value = (SELECT value WHERE attribute_id = 703)
WHERE attribute_id = 106;
应该是(如果直接在内部查询中使用,MYSQL不会更新表)
UPDATE mage_catalog_product_entity_varchar a,
mage_catalog_product_entity_varchar b
SET a.value = b.value WHERE a.attribute_id = 106
AND b.attribute_id = 703;
您还可以在 SQL Fiddle 1 上找到解决方案
MySQL 出现错误“You can'tspecify target table 'table_name' for update in FROM Clause” 要了解有关此错误的更多信息,您可以访问主题
MySQL #1093 - You can't specify target table 'giveaways' for update in FROM clause
如果讨论的表中有多个与属性 ID 703 相对应的条目,则查询将从插入的第一条记录中获取值,而另一条记录将被忽略。
您可以在此处查看此情况 SQL Fiddle 2
关于php - MYSQL 查询未更改,从同一列中的值更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090142/