MySql基于其他字段更新字段

时间:2012-05-01 14:19:36

标签: mysql database wordpress

我正在尝试更新所有WordPress帖子的自定义元数据,其中另一个自定义元字段等于1。

我的表看起来像

meta_id  |  post_id  |  meta_key  |  meta_value
------------------------------------------------
0001     |   1234    |   _p_free  |    1
0002     |   1234    |   new_free |    null
0003     |   2345    |   _p_free  |    1
0004     |   2345    |   new_free |    null
0005     |   9876    |   _p_free  |    0
0006     |   9876    |   new_free |    null

因此,正如您所看到的,我想要做的是运行一个查询,找到包含meta_key = _p_free和meta_value = 1的所有帖子,然后使用相同的post_id更新new_free也等于1。 / p>

由于

1 个答案:

答案 0 :(得分:2)

您需要将multiple-table UPDATE syntax与自我加入一起使用:

UPDATE tbl AS t1 JOIN tbl AS t2 USING (post_id)
SET t1.meta_value = 1
WHERE t2.meta_key = '_p_free' AND t2.meta_value = 1