INSERT复制其他行数据时如何修改指定字段(如project_id)的值
实现方案
你需要补充两处逻辑:筛选原项目对应行、在SELECT时直接指定新的project_id值,完整SQL写法如下:
INSERT INTO project_data (project_id, random_field, random_field2) SELECT 30, -- 替换为你实际的新项目ID random_field, random_field2 FROM project_data WHERE project_id = 12; -- 替换为你需要复制的原项目ID
逻辑说明
- 插入字段列表里加上
project_id,SELECT语句的第一个值直接写死新项目ID,不需要从原表读取,插入时就会自动替换为新的项目ID - WHERE子句过滤出原项目对应的所有行,只复制这些行的数据
- 自增主键
id不需要写在字段列表里,数据库会自动生成新的唯一ID,和你示例中的效果完全一致
注意事项
- 如果你原表还有其他需要保留的非自增字段,需要同步加到INSERT的字段列表和SELECT的对应位置
- 注意你原有尝试代码里的拼写错误:
ramdom_field2应为random_field2,避免执行时报字段不存在的错误
内容的提问来源于stack exchange,提问作者Charley R.
相关产品推荐
相关产品推荐

