我找到了一些关于如何"插入"....的解释"哪里不存在",但这并不能解决我的问题。
我正在使用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中插入产品后,我将尝试在数据库中触发此语句。