我找到了几个关于如何"插入" ...."哪里不存在"的解释,但它并没有解决我的问题。
我使用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';

但它不起作用。
有人可以帮帮我吗?
卡欧
答案 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中插入产品后,我现在尝试在我的数据库中触发此语句。