【问题标题】:Copy value to another field where columns value equals将值复制到列值等于的另一个字段
【发布时间】:2012-10-16 20:49:02
【问题描述】:

我试图通过使用另一个列值将列中的一个值复制到同一列中的另一个值,例如:

column 1 - column 2
703 - /2/3/image.jpg
106 - "empty"
100 - description

所以我希望它复制第 2 列的值,其中第 1 列的值 = 706,并放入第 2 列,其中第 1 列的值 = 106,这样描述就可以了。有谁知道执行此操作的查询?

谢谢, 西蒙

注意:

在执行您的建议时遇到以下错误

1093 - 您不能在 FROM 子句中指定目标表 'mage_catalog_product_entity_varchar' 进行更新

再次感谢您的回复:需要添加 INNER JOIN 不确定如何执行此方法,尽管再次感谢任何建议,谢谢

【问题讨论】:

  • 我删除了 PHP 标记,因为这不是 php。如果你觉得你会接受 PHP 中的解决方案,那么也许可以改变你的问题。

标签: mysql


【解决方案1】:

您可以使用子查询来完成,如下所示:

update tablename set column2 = (select column2 from tablename where column1 = 706 limit 1) where column1 = 106;

编辑
事实证明,您不能有一个引用您正在更新的表的子查询。因此,您需要使用 INNER JOIN(请参阅此处的答案:https://stackoverflow.com/a/4268431/1095946)。

试试这样的:

UPDATE mage_catalog_product_entity_varchar t1, mage_catalog_product_entity_varchar t2
SET t1.value = t2.value
WHERE t1.attribute_id = 106
  AND t2.attribute_id = 703

【讨论】:

  • 谢谢你,有什么想法写内连接部分吗?再次感谢
  • 根据dev.mysql.com/doc/refman/5.0/en/update.html(搜索“inner join”),Salil 的回答似乎是正确的方法。
  • 我明白了,关于如何实施的任何想法。抱歉,我的 MYSQL 很糟糕,我只是一名设计师,但我确实知道我在做什么 :) 你有我可以执行的完整查询吗?
  • 已尝试以下方法:更新 mage_catalog_product_entity_varchar SET value = value WHERE attribute_id = 106 AND attribute_id = 703
【解决方案2】:
Update table t1, table t2 
SET t1.column2 = t2.column2 
WHERE t1.column1 = 106 AND t2.column1 = 706

【讨论】:

  • 感谢 Salil 的回复,您对查询的外观有何想法?
  • 正在尝试这个 dosnt 更新:更新 mage_catalog_product_entity_varchar t1,mage_catalog_product_entity_varchar t2 SET t1.value = t2.value WHERE t1.attribute_id = 106 AND t2.attribute_id = 703
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多