我有一个表,其中包含列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/

10-11 04:22