如何编写单条SQL批量修正可下载产品客户访问权限分配错误
单条SQL批量更新可下载产品权限分配错误记录方案
可以直接用MySQL多表关联更新语法实现一步批量修正,不需要先查询再逐行执行更新语句,具体SQL如下:
UPDATE magento_dev.downloadable_link_purchased dp JOIN magento_dev.sales_order so ON so.increment_id = dp.order_increment_id JOIN magento_dev.sales_order_address soa ON so.entity_id = soa.parent_id JOIN magento_dev.customer_entity c ON c.email = soa.shipping_email SET dp.customer_id = c.entity_id WHERE so.customer_id = 12345 AND so.created_at > '2021-04-01' AND soa.shipping_email IS NOT NULL AND dp.customer_id != c.entity_id;
注意事项
- 执行更新前建议先开启事务测试:先执行
BEGIN;运行上面的更新语句,核对更新行数和内容符合预期后再执行COMMIT提交,出现问题可以直接执行ROLLBACK回滚,避免数据损坏 - 可以先把语句中的
UPDATE换成SELECT dp.purchased_id, dp.customer_id 原客户ID, c.entity_id 正确客户ID运行,确认要修正的记录和预期完全一致后,再执行更新操作 - 如果业务中存在单个订单对应多个收货邮箱的场景,需要先确认关联逻辑不会出现单条购买记录匹配到多个客户ID的情况,避免更新错误
内容的提问来源于stack exchange,提问作者Mike Miller
相关产品推荐
相关产品推荐

