首页 > 解决方案 > 根据另一行更新一行

问题描述

我正在处理我的wordpress数据库,我想更新我的表wp_postmeta并设置所有_order_tax字段以_order_total使用以下公式计算:

_order_tax = 0.2 * _order_total

这是我的数据库的快照(关注两个有趣的行): 在此处输入图像描述

我想对每一行进行此更新,meta_key = _order_total但我不知道如何编写新值应该基于相同_order_total的值post_id

比如我想写(符号语言不是sql):

1834在哪里post_id,然后更新包含 在列中的行,其中包含的行与我要更新的行相同。meta_value_order_taxmeta_keymeta_value*0.2_order_totalmeta_keypost_id

我希望我的问题很清楚。

感谢您的帮助

标签: mysqlsqldatabasewordpressphpmyadmin

解决方案


您可以使用UPDATE ... JOIN ... SET ... WHERE ...如下语法:

UPDATE wp_postmeta w1
INNER JOIN wp_postmeta w2 
    ON  w2.post_id = w1.post_id 
    AND w2.meta_key = '_order_total' 
SET w1.meta_value = w2.meta_value * 0.2
WHERE w1.meta_key = '_order_tax'

推荐阅读