我有一个表,其中包含列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
给定一次更新和一次插入操作,是否有任何方便的方法来执行此操作
最佳答案
可能只有一个语句可以做到这一点,但是为什么您不只使用事务(一种与供应商无关的方式):
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,以便能够在供应商之间轻松切换,不要介意我已经十多年没有切换供应商了:-)
尽管如此,即使我从不使用它,还是很高兴的(尽管有时出于性能原因,我会去特定于供应商的内容-我认为对于这种特殊用例来说,这不是必需的,因为它可能不是您会做很多事情)。
关于sql-server - 如何将数据库的一行转换为两行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3305382/