mysql - 根据另一行更新一行
问题描述
我正在处理我的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_tax
meta_key
meta_value*0.2
_order_total
meta_key
post_id
我希望我的问题很清楚。
感谢您的帮助
解决方案
您可以使用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'