通过使用选择连接查询将 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 个列值相加来更新列值的主要内容,如果未能解决你的问题,请参考以下文章

TSQL将子查询行值连接到列值中

如何在火花中使用逗号分隔符将相同的列值连接到新列

通过选择 Pandas 中的其他列来更新条件列值

如何通过在配置单元的分区表中选择另一列来覆盖列值

使用连接忽略选择中的表列值

如何将列值从存储过程中的另一个表更新到表中?