【问题标题】:Update column value by adding 2 column values together using a select an join query通过使用选择连接查询将 2 个列值相加来更新列值
【发布时间】:2015-11-16 00:15:42
【问题描述】:

我正在寻找一种方法来更新第 3 列,方法是将其他 2 列的值相加。我遇到的问题是 UPDATE 语句似乎需要指定一个表,但我通过执行 SELECT 和 JOIN 语句使用“虚拟”表。这是我目前拥有的代码:

选择 * FROM wp_posts AS p 左连接( 选择 tr.object_id 作为 id, t.name AS 物理 FROM wp_term_relationships AS tr 内部连接 ​​wp_term_taxonomy AS x 开(x.taxonomy='pa_physical-inventory' 和 x.term_taxonomy_id=tr.term_taxonomy_id) INNER JOIN wp_terms AS t ON t.term_id=x.term_id ) AS mo ON p.id = mo.id 左连接( 选择 tr.object_id 作为 id, t.name AS murphy FROM wp_term_relationships AS tr 内部连接 ​​wp_term_taxonomy AS x 开(x.taxonomy='pa_murphy-inventory' 和 x.term_taxonomy_id=tr.term_taxonomy_id) INNER JOIN wp_terms AS t ON t.term_id=x.term_id ) AS pa ON p.id = pa.id 左连接( 选择 post_id 作为 id,meta_value 作为总库存 FROM wp_postmeta WHERE meta_key = '_stock' ) AS totalinventory ON p.id = totalinventory.id WHERE p.post_status = '发布' 和 p.post_type = '产品'

我希望将“murphy”和“physical”加在一起,并为返回的每一行插入“totalinventory”。其中一些行返回“null”(例如,如果“murphy”没有股票集,则它显示为 null)所以我希望在将值相加时也将其视为“0”。

任何帮助或指导将不胜感激,因为我已经为此苦苦思索了太久了。

编辑:我对解决方案中的 PHP 持开放态度,因为最终这将使用 cron 作业运行。

【问题讨论】:

    标签: mysql wordpress join sql-update woocommerce


    【解决方案1】:

    在更简单的情况下,SELECT 通常可以像这样转换为 UPDATE...

    选择:

    SELECT * 
    FROM [tables and joins]
    WHERE [conditions]
    ;
    

    更新:

    UPDATE [tables and joins (as above)]
    SET tableA.fieldB = tableC.fieldD + tableE.fieldF
    WHERE [conditions (same as above)]
    ;
    

    当然,如果您有 LEFT JOIN,则需要在必要时进行补偿;我发现最好先选择 SET 所需的所有部分,转换为 UPDATE 查询之前。

    免责声明:正如我前言,根据情况和数据的具体情况,这并不总是有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      相关资源
      最近更新 更多