自上周以来,我一直坚持这一点。我有两个表,其中id
的{{1}}列与CustomerTbl
的{{1}}列相关:
我想要实现的是我想从自身复制表的数据,但是将新生成的CustomerID
的ID复制到PurchaseTbl
CustomerTbl
就像上面的屏幕截图一样。很高兴提供任何帮助:)
答案 0 :(得分:0)
不确定最终游戏是什么,但是解决此问题的一种方法是:
INSERT INTO purchaseTbl ( customerid ,
item ,
price )
SELECT customerid + 3 ,
item ,
price
FROM purchaseTbl;
答案 1 :(得分:0)
您可以使用OUTPUT
子句访问新ID。但是要同时访问OLD ID和NEW ID,您将需要使用MERGE
语句。 INSERT
语句不允许您访问源旧ID。
首先,您需要在某个地方存储新旧ID(映射表)。您可以使用表变量或临时表
declare @out table
(
old_id int,
new_id int
)
然后使用带有输出子句的merge语句
merge
#CustomerTbl as t
using
(
select id, name
from CustomerTbl
) as s
on 1 = 2 -- force it to `false`, not matched
when not matched then
insert (name)
values (name)
output -- the output clause
s.id, -- old_id
inserted.id -- new_id
into @out (old_id, new_id);
此后,您只需使用@out并使用old_id加入即可获取PurchaseTbl的new_id
insert into PurchaseTbl (CustomerID, Item, Price)
select o.new_id, p.Item, p.Price
from @out o
inner join PurchaseTbl p on o.old_id = p.CustomerID