2015-10-28 164 views
1

對於令人困惑和麻煩的問題表示抱歉,但無論如何,我需要做以下事情:在'wp_usermeta'表中,我有字段(meta_keys)'類別'和'request_category'。現在我想用meta_value'request_category'覆蓋'category'的meta_value,其中'category'有一個特定的值。更新'meta_value'從wp_usermeta表中分配同一個表的另一個'meta_value'的值

但是在執行SQL查詢後,我在'category'的'meta_value'字段中得到NULL。這裏是我的代碼:

UPDATE 
    wp_usermeta 
SET 
    wp_usermeta.meta_value = 
    (SELECT 
    umeta_tmp.meta_value 
    FROM 
    umeta_tmp 
    WHERE umeta_tmp.meta_key = 'request_category' 
    AND umeta_tmp.umeta_id = wp_usermeta.umeta_id) 
WHERE wp_usermeta.meta_key = 'category' 
    AND wp_usermeta.meta_value = 'travel_agency'  

凡表「umeta_tmp」是一個臨時表,其中我一直在「wp_usermeta」表的數據(因爲我不能修改我在SELECT部分​​使用相同的表)。

任何人都可以提示我如何實現這一點。 謝謝。

+1

會像update_user_meta不適合這個工作? –

+0

是的,我可以用它作爲最後的手段。 –

回答

1

轉換成更新與JOIN

UPDATE wp_usermeta 
JOIN umeta_tmp ON umeta_tmp.meta_key = 'request_category' 
       AND umeta_tmp.umeta_id = wp_usermeta.umeta_id 
SET wp_usermeta.meta_value = umeta_tmp.meta_value 
WHERE wp_usermeta.meta_key = 'category' AND 
     wp_usermeta.meta_value = 'travel_agency'` 

如果umeta_tmp表是剛剛從wp_usermeta表副本則JOINWHERE條件contradictious因爲你通過id要在同一行(均衡的meta_key場)在umeta_tmp表中爲'request_category',同時在wp_usermeta中爲'category'。 鑑於有了這個動人的WHERE條件爲JOIN結果將是以下幾點:

UPDATE wp_usermeta 
JOIN umeta_tmp ON wp_usermeta.meta_key = 'category' AND 
       wp_usermeta.meta_value = 'travel_agency' AND 
       umeta_tmp.umeta_id = wp_usermeta.umeta_id 
SET wp_usermeta.meta_value = umeta_tmp.meta_value 
相關問題