我有一个包含列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
是否有任何方便的方法来执行此更新和一次插入
答案 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,以便能够轻松地在供应商之间切换,更不用说我已经十多年没有切换供应商的事实了: - )
尽管如此,即使我从未使用过它也很高兴(尽管有时我会因为性能原因而出于特定供应商的要求 - 我不认为这对于这个特定的用例是必要的,因为它是可能不是你会做很多的事情。)