我为混乱和繁琐的问题道歉,但无论如何我需要做以下事情:在' wp_usermeta' table我有字段(meta_keys)' category'和' request_category'适用于所有用户。现在我想要覆盖'类别'的meta_value。使用meta_value' request_category'其中'类别'具有特定的价值。
但是在执行SQL查询后,我在'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'的数据。 table(因为我不能修改我在SELECT部分中使用的同一个表)。
有人能暗示我怎样才能实现这一目标。 感谢。
答案 0 :(得分:1)
使用JOIN转换为UPDATE
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
表中的副本,则JOIN
和WHERE
条件是矛盾的,因为您需要meta_key
字段同一行(id
的均衡)在'request_category'
表格中为umeta_tmp
,同时在'category'
中为wp_usermeta
。
将此视图移入并将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