2015-09-06 61 views
1

我需要对WordPress DB进行更新,但考虑到次要条件时我会一直打到路障。仅当存在元值#2和元键#2时,为元键#1设置元值#1

在非常简单的话来说,我有一个meta_key = '花'需要一个meta_value = '玫瑰'要设置只在meta_key = '月'meta_value = '八一'

我还没有能够编写包含第二个条件的成功mySQL查询。我知道如何做到这一点:

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

但不仅限于meta_key =“月”meta_value =“八一”

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

更新#1:

按照要求通过@Strawberry,给予进一步的细节我的问题。我不完全确定,但meta_key ='花'和meta_key ='月'必须相关。就目前而言,所有帖子都由meta_key ='flowers'和meta_key ='month'组成。

UDPATE#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?

感谢大家!

回答

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') 
+0

@Strawberry嗯......好点:-)编辑我的答案,那是代表我的愚蠢。 – Mureinik

+0

我不完全确定如何回答你的问题。你指的是meta_key =花和meta_key =月是相关的吗?这是需要post_id吗? – Jorge

+0

@乔治嗯,是的 - 我们还能怎么知道它们是相关的 - 但这在评论中讨论太重要了。也许你可以修改你的问题。 – Strawberry

相关问题