仅当Meta值#2和Meta Key#2存在时,为元键#1设置元值#1

时间:2015-09-06 16:16:00

标签: php mysql wordpress

我需要对我的WordPress数据库进行更新,但考虑到次要条件时,我一直遇到障碍。

以非常简单的术语,我有 meta_key ='鲜花' 需要 meta_value ='玫瑰' 仅设置 meta_key =' month' meta_value =' august'

我无法编写包含第二个条件的成功MySQL查询。我知道怎么做:

update wp_postmeta
  set meta_value = 'roses'
where meta_key = 'flowers'

但不仅限于 meta_key ='月' meta_value =' august'

任何帮助将不胜感激!提前谢谢。

更新#1:

根据@Strawberry的要求,进一步详细说明我的问题。我不完全确定如何,但meta_key =' flowers'和meta_key =' month'必须相关。目前,所有帖子都包含一个meta_key =' flowers'和meta_key ='月'。

更新#2:

我能够从@Rahul那里得到帮助,这是适用于我的版本:

UPDATE wp_postmeta a
JOIN wp_postmeta b ON a.post_id = b.post_id AND 
                      b.meta_key = 'month' AND 
                      b.meta_value = 'august'
  SET    a.meta_value = 'roses'
WHERE  a.meta_key = 'flowers';

希望它也可以帮助其他人。另外,有关JOIN的更多详细信息,请参阅:How to do 3 table JOIN in UPDATE query?

感谢大家!

1 个答案:

答案 0 :(得分:0)

exists运算符应该完成这项工作:

UPDATE wp_postmeta a
SET    a.meta_value = 'roses'
WHERE  a.meta_key = 'flowers' AND
       EXISTS (SELECT *
               FROM   wp_postmeta b
               WHERE  a.post_id = b.post_id AND 
                      b.meta_key = 'month' AND 
                      b.meta_value = 'august')