2015-09-06 63 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

相關問題