"Insert if doesn't exist"仅适用于产品类型 = 'product' 在表 WP post_meta



我找到了一些关于如何"插入"....的解释"哪里不存在",但这并不能解决我的问题。

我正在使用Wordpress,我有一个名为wp_posts的表,其中包含帖子,产品,产品变量,附件等数据

我必须在mysql中运行查询,以在wp_postmeta中创建一个自定义字段,名称为"_special_stock",每次在wp_posts中创建产品时,值为"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';

但是它不起作用。

有谁能帮帮我吗?

Caio

没有人回答,但我最终找到了解决方案,因此我想与大家分享。我不是专家,所以我不知道这是否是最好的解决方案,但它对我有用……:)

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中插入产品后,我将尝试在数据库中触发此语句。

相关内容

  • 没有找到相关文章