我需要从名为T_myorders的表中复制前50行,这些行有100行,并将其添加到同一个表中,但id列是原始键,这不允许我这样做,我需要输出以这种方式,当我将行添加到我的表时,添加的行应该以101,102,103 ....开始id列而不是再次打印相同的1,2,3 ....这一步和另一行是,
我应该声明两个值,一个是我需要复制多少个顶行,另一个值是它应该重复多少次,比如2,然后50行应该重复两次,id列应该高达200。 任何人都可以帮我完成这项任务。
谢谢, 拉吉
答案 0 :(得分:0)
创建临时表
使用select insert将top x记录(其中x是第一个输入参数)插入临时表
找到最大主键值,将其增加1并将其存储在变量primary_key中
声明游标以从临时表中获取记录
创建一个运行y次的for循环(其中y是第二个参数)
内循环
打开光标并读取行
环
将记录插入主表,使用primary_key作为主键
重新分配primary_key = primary_key +1
闭环
关闭光标
关闭for循环
希望这会有所帮助。这只是一个可能有用的算法
这可以通过更好的方式完成
你可以通过使用下面的语句来避免光标
创建临时表
使用select insert将top x记录(其中x是第一个输入参数)插入临时表
找到最大主键值,将其存储在变量primary_key中
创建一个运行y次的for循环(其中y是第二个参数)
内循环
插入YOUR_TABLE SELECT IDENTITY(int,primary_key,1)AS id,来自临时表的REST OF COLUMNS
重置primary_key以保存新值
闭环
答案 1 :(得分:0)
将@ s1声明为int
从表
中选择@ s1 = MAX(主键)插入表格
选择前50个ROW_NUMBER()结束(按f1分区0顺序)+ @ s1作为pk_id (而不是主键),f1,f2,f3来自表