我找到了几个关于如何“插入……”“不存在的地方”的解释,但这并没有解决我的问题。
我正在使用 Wordpress,我有一个名为 wp_posts 的表,其中包含帖子、产品、product_variations、附件等数据
每次在 wp_posts 中创建产品时,我都必须在 mysql 中运行查询以在 wp_postmeta 中创建一个名称为“_special_stock”且值为“0”的自定义字段。
我发现:
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT wp_posts.ID, '_special_stock', '0'
FROM wp_posts
WHERE NOT EXISTS (SELECT post_id
FROM wp_postmeta
WHERE post_id=wp_posts.ID)
该代码完美运行,但它不仅包括产品行,还包括其他产品类型的行,我必须包括一个条件,以便插入仅用于产品和 product_variation 的 meta_key (_special_stock),像这样:
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT wp_posts.ID, '_stock', '0'
FROM wp_posts
WHERE NOT EXISTS (SELECT post_id
FROM wp_postmeta
WHERE post_id=wp_posts.ID)
WHERE wp_posts.product_type='product'
OR wp_posts.product_type='product_variation';
但它不起作用。
有人可以帮帮我吗??
蔡欧
最佳答案
没有人回答,但我终于找到了解决办法,所以我想和你分享。我不是专家,所以我不知道它是否是最好的解决方案,但它对我有用......:)
BEGIN
INSERT IGNORE INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT wp_posts.ID, '_stock', '0'
FROM wp_posts
WHERE wp_posts.post_type = 'product'
AND NOT EXISTS (SELECT post_id
FROM wp_postmeta
WHERE wp_postmeta.post_id = wp_posts.ID);
INSERT IGNORE INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT wp_posts.ID, '_stock', '0'
FROM wp_posts
WHERE wp_posts.post_type = 'product_variation'
AND NOT EXISTS (SELECT post_id
FROM wp_postmeta
WHERE wp_postmeta.post_id = wp_posts.ID);
END
我希望这对其他人有用!但是,如果有人知道任何其他方法来实现结果,我真的很感激。在 wp_posts 中插入产品后,我将尝试在我的数据库中触发此语句。
关于mysql - "Insert if doesn' t 在 post_meta 表 WP 中存在 "only for product type = ' 产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699263/