我有一个名为Students的表,我希望在列表中获得最大ID,以便我可以创建一个新列表,其他学生以id作为Students表中的最新值。代码中的解释如下:
declare @maxStudentId int
set @maxStudentId = (select max(StudentId) + 1 from Students)
create table #tempStudents
(
tempId int identity(@maxStudentId, 1) primary key,
maxGrade int
)
我在Students表中可用的最大ID值之后有下一个值。例如,学生中的最后一个ID是100,所以在@maxStudentId
中我的值为101。
对于新表,我想将起始ID设置为101,但在尝试设置identity(@maxStudentId, 1)
时出错,因为变量不是数字或整数,+或 - 。我怎样才能做到这一点?
答案 0 :(得分:0)
你可以通过动态sql来做到这一点,这是一个如何做的例子
declare @SQL varchar(max)
declare @maxStudentId int
set @maxStudentId = (select max(StudentId) + 1 from Students)
set @SQL = 'create table #tempStudents ' +
'( ' +
'tempId int identity(' + convert(varchar, @maxStudentId) + ', 1) primary key, ' +
'maxGrade int ' +
') '
EXEC SP_EXECUTESQL @SQL
变量@SQL将包含类似
的内容create table #tempStudents(tempId int identity(101,1)primary key,maxGrade int)