请求协助:对exams表执行查询、修改后插入新数据的SQL操作
解决方案:复制并修改行插入同表
没问题,你可以用SQL的INSERT...SELECT语句一步完成这个需求,不用先查询再手动构造插入语句,既高效又不容易出错。
核心SQL语句
INSERT INTO exams (ExamName, GradeId, TermId) SELECT ExamName, 32, 25 FROM exams WHERE Id = 155;
语句说明
- 我们明确指定要插入的列:
ExamName,GradeId,TermId,跳过主键Id——因为你的Id是自增主键,数据库会自动为新行分配下一个可用的主键值,也就是你预期的157。 SELECT部分从原表中获取Id=155行的ExamName值,同时直接把GradeId设为32、TermId设为25,替换原行的对应值。
验证结果
执行完插入语句后,你可以用下面的查询确认结果:
SELECT * FROM exams WHERE Id IN (155, 157);
这会返回原行(155-Maths-22-15)和新插入的行(157-Maths-32-25),确保操作符合预期。
注意:确保你的
Id列确实是自增主键(比如MySQL的AUTO_INCREMENT、SQL Server的IDENTITY属性),否则需要手动指定新的Id值。
内容的提问来源于stack exchange,提问作者celoaga
相关产品推荐
相关产品推荐

