"如果不存在则插入"仅适用于产品类型='产品'在post_meta表WP中

时间:2015-07-29 11:32:02

标签: mysql wordpress insert woocommerce

我找到了几个关于如何"插入" ...."哪里不存在"的解释,但它并没有解决我的问题。

我使用Wordpress并且我有一个名为wp_posts的表格,其中包含帖子,产品,产品变更,附件等数据

我必须在mysql中运行一个查询,在wp_postmeta中创建一个自定义字段,名称为" _special_stock"以及" 0"的值每次在wp_posts中创建产品时。

我找到了:



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';




但它不起作用。

有人可以帮帮我吗?

卡欧

1 个答案:

答案 0 :(得分:0)

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



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