MySQL如何为去重后的customer_id批量插入相同数据?
批量插入去重后的customer_id对应数据到members表
可以使用INSERT INTO ... SELECT语法实现批量插入,无需逐个执行INSERT语句。
核心SQL语句
INSERT INTO `members` (`customer_id`, `order_id`, `description`, `amount`) SELECT `customer_id`, 0 AS `order_id`, 'add same value example' AS `description`, 100 AS `amount` FROM `members` GROUP BY `customer_id` HAVING COUNT(*) = 1;
说明
- 查询部分:通过
SELECT获取去重后的customer_id,同时将固定值(0、'add same value example'、100)作为其他字段的值返回。 - 插入部分:
INSERT INTO指定目标表和字段,直接将SELECT的结果批量插入到表中。 - 优化点:原查询使用
SELECT *会返回所有列,这里只需要customer_id,减少不必要的数据传输,提升执行效率。
补充:获取所有唯一customer_id的简化写法
如果需求是获取所有不重复的customer_id(包括原表中出现多次的,仅取一次),可以改用DISTINCT简化查询:
INSERT INTO `members` (`customer_id`, `order_id`, `description`, `amount`) SELECT DISTINCT `customer_id`, 0, 'add same value example', 100 FROM `members`;
内容的提问来源于stack exchange,提问作者samkung
相关产品推荐
相关产品推荐

