我正在尝试将特定类别中的某些产品的价格提高一定百分比。我想出了应该工作的 select 语句,但在将它与 update 语句结合起来时遇到了问题。这是我所拥有的:
SELECT * from `wp_term_relationships` where term_taxonomy_id=376 and object_id in(select ID from `wp_posts` where `post_type`='product' and post_status='publish' and ID=wp_term_relationships.object_id)
这为我提供了我需要的产品。我可以对这些产品运行更新(如下所示)还是需要以某种方式组合它们?
update wp_postmeta set meta_value = meta_value * 1.40 where meta_key='_regular_price'
最佳答案
这是一个 MySQL 查询,可以满足您的目的。
更新_regular_price
UPDATE
`wp_postmeta`
SET
`meta_value` = ROUND(`meta_value` * 1.40, 2)
WHERE
meta_key = '_regular_price'
AND `post_id` IN (
SELECT
`object_id` AS product_id
FROM
`wp_term_relationships`
WHERE
term_taxonomy_id = 376
AND `object_id` IN (
SELECT
`ID`
FROM
`wp_posts`
WHERE
`post_type` = 'product'
AND `post_status` = 'publish'
AND `ID` = `object_id`
)
);
更新_price
UPDATE
`wp_postmeta`
SET
`meta_value` = ROUND(`meta_value` * 1.40, 2)
WHERE
meta_key = '_price'
AND `post_id` IN (
SELECT
`object_id` AS product_id
FROM
`wp_term_relationships`
WHERE
term_taxonomy_id = 376
AND `object_id` IN (
SELECT
`ID`
FROM
`wp_posts`
WHERE
`post_type` = 'product'
AND `post_status` = 'publish'
AND `ID` = `object_id`
)
);
您还必须删除存储在 wp_options
表 _transient_timeout_wc_var_prices_{{post_id}}
下的 WooCommerce 产品价格缓存_transient_wc_var_prices_{{post_id}}
在 option_name
DELETE
FROM `wp_options`
WHERE (`option_name` LIKE '_transient_wc_var_prices_%'
OR `option_name` LIKE '_transient_timeout_wc_var_prices_%')
以上查询已经过测试,对我有效。
在运行这个查询之前做一个数据库备份
希望这对您有所帮助!
关于mysql - Woocommerce MySQL 更新特定类别产品的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825554/