我怎样才能将数据库的一行转换为两行

时间:2010-07-22 02:33:41

标签: sql-server

我有一个包含列id,itemID和locationId的表。

我现在将一个locationId分成多个,所以我想:

更新locationId为10的所有记录,并有两行,其中locationId设置为11和12(两行的ItemId相同)

所以我要开始:

ID ItemID LocationID
1 1 10

我希望最终得到

ID ItemID LocationID
1 1 11
1 1 12

是否有任何方便的方法来执行此更新和一次插入

1 个答案:

答案 0 :(得分:2)

可能有一个声明可以做到,但为什么你不会只使用与供应商无关的交易方式:

begin transaction;
insert into TBL (id,itemid,locationid)
    select id, itemid, 11
    from TBL
    where locationid = 10;
update TBL
    set locationid = 12
    where locationid = 10;
commit transaction;

我总是倾向于在可能的情况下使用标准SQL,以便能够轻松地在供应商之间切换,更不用说我已经十多年没有切换供应商的事实了: - )

尽管如此,即使我从未使用过它也很高兴(尽管有时我会因为性能原因而出于特定供应商的要求 - 我不认为这对于这个特定的用例是必要的,因为它是可能不是你会做很多的事情。)