一次插入,选择和更新查询

时间:2018-03-29 18:50:04

标签: sql

我有一个名为exams的表,其中包含列名和值

Id(PK)- ExamName - GradeId - TermId
155  - Maths - 22 - 15 
156 - English - 23 - 15

我想要做的是:选择id = 155的行,将等级Id更新为32,将术语ID更新为25并插入到同一个表中。由于Id是主键,Id也会改变。 所以新插入的行将是:

157 - Maths - 32 - 25

是否有人可以帮助我。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式更新现有记录:

update exams set GradeId = 32, TermId=25 where Id=155

或者,您可以使用下面的值插入新记录,但更新会更加优先

insert into exams values (157,'Maths',32,25)

如果主键是自动递增,则可以使用:

insert into exams (ExamName,GradeId,TermId) values ('Maths',32,25)

永远不要更新主键,它总是会产生问题!

编辑:

要从另一个表格向表格插入记录,请尝试:

INSERT INTO tablename (ExamName,GradeId,TermId) 
SELECT ExamName,GradeId=32,TermID=25 --don't know where the numbers are coming from, that's why adding manually here
FROM examps
WHERE Id = 155

答案 1 :(得分:1)

好像你想要INSERT INTO.. SELECT

INSERT INTO exams (ExamName, GradeId, TermId)
SELECT ExamName, 32, 25
FROM exams
WHERE Id = 155

如果您计划以自动方式重复使用此功能,则需要将硬编码值(32, 25, 155)替换为您用于获取这些值的任何逻辑。