我有一个自定义帖子类型(艺术品)。除了更新另一个之外,我还需要更新所有超过 6 个月的(艺术品),其 meta_key
(状态)和 meta_value
为(可用)并更改为(不可用)该过程中有两个 meta_key
值。
因此,对于第一部分,我可以使用以下内容返回所有超过 6 个月的“可用”“艺术品”;
SELECT * FROM `wp207_posts` wp
INNER JOIN `wp207_postmeta` wm ON (wm.`post_id` = wp.`ID` AND wm.`meta_key`='status' AND wm.`meta_value`='available')
AND DATEDIFF(NOW(), `post_date`) > 182
有了这些,我需要更新
以下meta_key
值;
- 将“状态”从“可用”更新为“不可用”
- 更新“价格”以删除该值(即删除价格值(如果存在))
- 更新“price_range”以删除该值(即删除 Price_range 值(如果存在))
以下 SQL 允许我将“状态”从“可用”更新为“不可用”
UPDATE `wp207_posts` wp
INNER JOIN `wp207_postmeta` wm ON (wm.`post_id` = wp.`ID` AND wm.`meta_key`='status' AND wm.`meta_value`='available')
AND DATEDIFF(NOW(), `post_date`) > 182
SET `meta_value`=replace(meta_value, '0', '1')
WHERE `meta_key`='status';
如何使用相同的查询(超过 6 个月的艺术品)删除 meta_key
的值(参见上面的 2 和 3)?例如,如果我想删除所有超过 6 个月的艺术品的价格,这是否是最好的方法?
UPDATE `wp207_posts` wp
INNER JOIN `wp207_postmeta` wm ON (wm.`post_id` = wp.`ID` AND wm.`meta_key`='status' AND wm.`meta_value`='1')
AND DATEDIFF(NOW(), `post_date`) > 182
SET `meta_value`=''
WHERE `meta_key`='price';
我可以确认这篇文章中的所有 UPDATE
脚本都做了我需要它们做的事情 - 尽管怀疑有更好的方法。
最终 SQL
UPDATE wp207_postmeta wm
JOIN wp207_posts wp ON wm.post_id = wp.ID
SET wm.meta_value='not available'
WHERE
wm.meta_key='status' AND
wm.meta_value='available' AND
post_type='artwork' AND
DATEDIFF(NOW(), wp.post_date) > 182;
UPDATE wp207_postmeta
WHERE
wp207_postmeta.meta_key IN ('price', 'price_range') AND
wp207_postmeta.post_id IN (SELECT ID FROM wp207_posts wp WHERE
post_type='artwork' AND
DATEDIFF(NOW(), wp.post_date) > 182);
谢谢。
最佳答案
试试这个
UPDATE wp207_postmeta wm
JOIN wp207_posts wp ON wm.post_id = wp.ID
SET wm.meta_value='not available'
WHERE
wm.meta_key='status' AND
wm.meta_value='available' AND
DATEDIFF(NOW(), wp.post_date) > 182;
DELETE FROM wp207_postmeta
WHERE
wp207_postmeta.meta_key IN ('price', 'price_range') AND
wp207_postmeta.post_id IN (SELECT ID FROM wp207_posts wp WHERE
DATEDIFF(NOW(), wp.post_date) > 182);
关于mysql - 更新自定义帖子类型元值的 WordPress SQL(超过 6 个月),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303948/