我有一个自定义帖子类型(图稿)。除了需要在该过程中更新另外两个值之外,我还需要使用meta_key
(状态)和meta_value
的(可用)更新所有六个月以上的(艺术品),并更改为(不可用)meta_key
。
因此,对于第一部分,我可以使用以下命令返回所有六个月以上的“可用”“艺术品”;
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
有了这些,我需要UPDATE
以下meta_key
值;
以下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';
我如何meta_key
使用相同的查询-超过6个月的艺术品删除一个值(请参见上面的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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句