代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

如何将数据库的一行转换为两行

  •  3
  • leora Matt Lacey  · 技术社区  · 15 年前

    我现在已经将一个locationId拆分为多个,因此我想:

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

    首先我有:


    1 1 10

    我想以

    Id项Id位置Id
    1 1 11

    有没有什么方便的方法可以同时更新和插入

    1 回复  |  直到 15 年前
        1
  •  2
  •   paxdiablo    15 年前

    可能只有一条语句可以做到这一点,但为什么不使用事务,一种与供应商无关的方式:

    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,以便能够轻松地在供应商之间切换,更不用说我已经十多年没有切换供应商了:-)

    尽管如此,即使我从未使用过它,拥有这种能力还是很好的(尽管有时出于性能原因,如果需要的话,我会去特定于供应商的地方——我认为这对于这个特定的用例来说是没有必要的,因为这可能不是你经常要做的事情)。