繁体   English   中英

MYSQL 查询生成表中现有值的乘法

[英]MYSQL Query generating multiplication of existing value in table

我正在尝试执行 mysql 查询以按 ID 顺序更新具有某些值的表,我第一次成功(生成 38 个结果行)但是当我再次执行此操作时,这会乘以表中的现有值(38x38 = 1444 行结果)在新 ID 行中重复已经存在的 product_id .....

我想插入这个表,只有来自另一个目标表的唯一 product_id,并按 ID 分组 [1,2,3,4,5,也不要重复这个]

编码:

/* add all eligible customers to temporary table */
INSERT INTO `temp_wp_woocommerce_subscription_downloads`
(`product_id`, `subscription_id`)

  SELECT posts.ID AS product_id, downn.subscription_id AS subscription_id
  FROM wp_posts posts
  JOIN wp_woocommerce_subscription_downloads downn
  WHERE posts.post_type = 'product'
    AND posts.post_status = 'publish'
;

在打印中,您可以看到生成的问题:

https://prntscr.com/s2zhil

编辑:使用@GordonLinoff 答案中的代码完美工作,但在运行并添加新产品并再次运行查询后, ID不是按订单(出现“跳转/刻录一些 id”,我如何按唯一 id 排序)也是吗?如您所见: http://prntscr.com/s31rrq

这解决了问题的原始版本。

您可以在productid上添加唯一索引,然后on duplicate key使用。

alter table temp_wp_woocommerce_subscription_downloads
    add constraint unq_temp_wp_woocommerce_subscription_downloads_product_id
        unique(product_id);

INSERT INTO temp_wp_woocommerce_subscription_downloads(`product_id`, `subscription_id`)

    SELECT p.ID AS product_id, d.subscription_id AS subscription_id
    FROM wp_posts posts p JOIN
         wp_woocommerce_subscription_downloads d
         ON p.post_type = 'product' AND p.post_status = 'publish'
    ON DUPLICATE KEY UPDATE subscription_id = d.subscription_id;

也就是说,我怀疑您可能还缺少表上的JOIN条件——比如通过帖子或产品。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM