通过使用选择连接查询将 2 个列值相加来更新列值
Posted
技术标签:
【中文标题】通过使用选择连接查询将 2 个列值相加来更新列值【英文标题】:Update column value by adding 2 column values together using a select an join query 【发布时间】: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 作业运行。
【问题讨论】:
【参考方案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 查询之前。
免责声明:正如我前言,根据情况和数据的具体情况,这并不总是有效。
【讨论】:
以上是关于通过使用选择连接查询将 2 个列值相加来更新列值的主要内容,如果未能解决你的问题,请参考以下文章