wordpress 如何在Woocommerce中更新pm_virtual.Meta_value = 'no'

iyr7buue  于 5个月前  发布在  WordPress
关注(0)|答案(2)|浏览(63)

我需要更新pm_virtual.meta_value = 'no'的值,仅适用于具有pm_downloadable.meta_value = 'yes'的产品。如何执行此操作?

SELECT
  p.ID,
  p.post_title,
  pm_downloadable.meta_value AS downloadable_trait,
  pm_virtual.meta_value AS virtual_trait
FROM
  xhdps_posts AS p
  INNER JOIN xhdps_postmeta AS pm_downloadable ON p.ID = pm_downloadable.post_id
  LEFT JOIN xhdps_postmeta AS pm_virtual ON p.ID = pm_virtual.post_id
  AND pm_virtual.meta_key = '_virtual'
WHERE
  p.post_type = 'product'
  AND p.post_status = 'publish'
  AND pm_downloadable.meta_key = '_downloadable'
  AND pm_downloadable.meta_value = 'yes'
  AND pm_virtual.meta_value = 'no'

字符串

cwtwac6a

cwtwac6a1#

您可以使用UPDATE`` statement along with a JOIN`来根据指定的条件过滤产品。

UPDATE xhdps_postmeta AS pm_virtual
INNER JOIN xhdps_postmeta AS pm_downloadable ON pm_virtual.post_id = pm_downloadable.post_id
INNER JOIN xhdps_posts AS p ON pm_downloadable.post_id = p.ID
SET pm_virtual.meta_value = 'no'
WHERE 
    p.post_type = 'product'
    AND p.post_status = 'publish'
    AND pm_downloadable.meta_key = '_downloadable'
    AND pm_downloadable.meta_value = 'yes'
    AND pm_virtual.meta_key = '_virtual';

字符串

8qgya5xd

8qgya5xd2#

只需将查询中断,将XHDPS_POSTMETA表从SELECT查询中取出,并使用相关值UPDATE它,如下所示:

UPDATE XHDPS_POSTMETA
   SET
    META_VALUE = 'no'
WHERE meta_value != 'no'
  AND meta_key = '_virtual' 
  AND post_id IN (
SELECT p.ID
  FROM xhdps_posts AS p
  INNER JOIN xhdps_postmeta AS pm_downloadable ON p.ID = pm_downloadable.post_id
 WHERE     P.POST_TYPE = 'product'
       AND P.POST_STATUS = 'publish'
       AND PM_DOWNLOADABLE.META_KEY = '_downloadable'
       AND PM_DOWNLOADABLE.META_VALUE = 'yes');

字符串

相关问题