You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条SQL快速翻倍MySQL测试数据表行数?

解决MySQL表数据翻倍且避免唯一索引冲突的SQL方案

原语句无法执行的核心原因是user_id列带有唯一索引,直接复制原表的user_id会触发唯一约束冲突。以下是针对不同user_id类型的修改方案:

数值型user_id

如果user_id是整数类型,可通过叠加原表最大user_id的值生成新的唯一标识:

INSERT INTO mytable (user_id, org_id, type)
SELECT (SELECT MAX(user_id) FROM mytable) + user_id, org_id, type FROM mytable;
  • 子查询(SELECT MAX(user_id) FROM mytable)获取当前表最大user_id,与原行user_id相加后,确保新值不会与原有值重复
  • 自增id列无需在插入列表中指定,MySQL会自动为新行分配唯一自增ID

字符串型user_id

如果user_id是字符串类型,可通过拼接唯一后缀生成不重复的新值:

INSERT INTO mytable (user_id, org_id, type)
SELECT CONCAT(user_id, '_', UUID_SHORT()), org_id, type FROM mytable;
  • UUID_SHORT()生成短唯一数值,与原user_id拼接后保证唯一性
  • 若需要更短标识,也可用UNIX_TIMESTAMP()替代,但高并发场景下需注意重复风险

通用注意事项

  • 执行前建议备份表数据,避免操作失误引发问题
  • 若需多次翻倍数据,可重复执行修改后的SQL,每次都会基于当前表最大user_id生成新的唯一值

内容的提问来源于stack exchange,提问作者Darren Gates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:32:34