mysql - "Insert if doesn' t 在 post_meta 表 WP 中存在 "only for product type = ' 产品

标签 mysql wordpress insert woocommerce

我找到了几个关于如何“插入……”“不存在的地方”的解释,但这并没有解决我的问题。

我正在使用 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/

相关文章:

mysql - 执行效率差异: one SQL VS. 两次拆分SQL

html - 自定义菜单上的 Wordpress 样式事件菜单项

mysql - 删除少于 5 个字的评论/内容

MySQL:根据条件拆分表的最快方法

Java + MySQL - 语法错误但语句正确

mysql - phpmyadmin - 类别作为数据库名称?

php - mysql 中是否有任何预定义函数可以获取先前的值?

PHP 和 MySql 更新

php - Wordpress - wpdb 查询没有列出与 sql 查询相同的结果

list - 序言列表在任何位置插入