sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man bättre duplicerar en uppsättning data i SQL Server

Varför går du inte med på FruitName för att få ett bord med gamla och nya FruitIds? Med tanke på att information skulle läggas till samtidigt... det kanske inte är det bästa alternativet men du kommer inte att använda några cykler.

INSERT INTO BASKET(BASKETNAME)
VALUES ('COPY BASKET')

DECLARE @iBasketId int
SET @iBasketId = @@SCOPE_IDENTITY;


insert into Fruit (BasketId, FruitName)
select @iBasketId, FruitName
from Fruit 
where BasketId = @originalBasket

declare @tabFruit table (originalFruitId int, newFruitId int)

insert into @tabFruit (originalFruitId, newFruitId)
select o.FruitId, n.FruitId
from (SELECT FruitId, FruitName from Fruit where BasketId = @originalBasket) as o
join (SELECT FruitId, FruitName from Fruit where BasketId = @newBasket) as n
    on o.FruitName = n.FruitName


insert into Property (FruitId, PropertyText)
select NewFruitId, PropertyText
from Fruit f join @tabFruit t on t.originalFruitId = f.FruitId


  1. SQL Server - anslut rader till en kommaseparerad lista

  2. Skapa en tabell i SQL Server (T-SQL)

  3. MySQL:Kolumnen innehåller ord från ordlistan

  4. Använder RegEx i SQL Server