MySQL同表复制用户记录 非自增ID场景下新增记录实现
MySQL同表非自增主键场景下批量复制指定用户记录实现方案
实现SQL(假设表名为user_table,可替换为实际表名)
-- 先获取当前表的最大ID值存入变量 SET @max_id = (SELECT MAX(ID) FROM user_table); -- 批量插入新用户记录 INSERT INTO user_table (ID, USER, col1, col2) SELECT -- 每读取一条原记录,ID自增1 (@max_id := @max_id + 1) AS new_id, -- 新用户ID固定为75 75 AS USER, col1, col2 FROM user_table WHERE USER = 60;
说明
- 示例中原表最大ID为82,赋值给
@max_id后首次自增得到83,后续依次递增,完全匹配预期结果 - 如果表还有其他需要复制的非主键字段,直接在INSERT的字段列表和SELECT返回列表中对应添加即可
- 生产环境操作前建议先单独执行SELECT部分预览即将插入的数据,确认无误后再执行写入操作;高并发场景下建议操作前对表加写锁,避免其他写入请求导致ID冲突
内容的提问来源于stack exchange,提问作者satcha
相关产品推荐
相关产品推荐

