从 wp_usermeta table 更新 'meta_value' 分配相同 table 的另一个 'meta_value' 的值
Update 'meta_value' from wp_usermeta table assigning value of another 'meta_value' of the same table
对于令人困惑和繁琐的问题,我深表歉意,但无论如何我需要执行以下操作:在 'wp_usermeta' table 中,我有字段 (meta_keys) 'category' 和 'request_category' 对于所有用户。现在我想用 meta_value 'request_category' 覆盖 'category' 的 meta_value,其中 'category' 具有特定值。
但是在执行 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'
其中 table 'umeta_tmp' 是一个临时的 table 我在其中保存了 'wp_usermeta' table 的数据(因为我无法修改相同的 table,我在 SELECT 部分使用)。
任何人都可以提示我如何实现这一点。
谢谢。
通过 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
table 只是 wp_usermeta
table 的副本,那么 JOIN
和 WHERE
条件是矛盾的,因为您希望同一行的 meta_key
字段(由 id
均衡)在 umeta_tmp
table 中为 'request_category'
并且同时为 '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
对于令人困惑和繁琐的问题,我深表歉意,但无论如何我需要执行以下操作:在 'wp_usermeta' table 中,我有字段 (meta_keys) 'category' 和 'request_category' 对于所有用户。现在我想用 meta_value 'request_category' 覆盖 'category' 的 meta_value,其中 'category' 具有特定值。
但是在执行 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'
其中 table 'umeta_tmp' 是一个临时的 table 我在其中保存了 'wp_usermeta' table 的数据(因为我无法修改相同的 table,我在 SELECT 部分使用)。
任何人都可以提示我如何实现这一点。 谢谢。
通过 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
table 只是 wp_usermeta
table 的副本,那么 JOIN
和 WHERE
条件是矛盾的,因为您希望同一行的 meta_key
字段(由 id
均衡)在 umeta_tmp
table 中为 'request_category'
并且同时为 '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