根据另一行更新一行

时间:2019-12-27 17:49:09

标签: mysql sql database wordpress phpmyadmin

我正在处理我的 wordpress 数据库,我想更新我的表get并将所有wp_postmeta字段设置为从_order_tax用公式:

  

_order_tax = 0.2 * _order_total

这是我的数据库的快照(聚焦两个有趣的行): enter image description here

我想对_order_total的每一行进行此更新,但是我不知道如何写新值应基于同一{{ 1}}

例如,我想编写(符号语言而不是sql):

  

meta_key = _order_total 1834 的地方,然后更新包含以下内容的行的_order_total   post_id列中的post_id,该行的meta_value包含_order_tax中的meta_key,并且与我要更新的行相同的meta_value*0.2

我希望我的问题很清楚。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以使用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'