У меня есть таблица с 20000 записей.
Мне нужно продублировать «некоторые» данные, но с новым названием компании.
Таблица имеет уникальный идентификатор, который не является автоинкрементным, поэтому при каждой вставке мне нужно найти МАКС (уникальный идентификатор) и добавить 1.
Следующие скрипты работают, но имеют ужасную производительность.
DECLARE @RowCount AS INTEGER;
SELECT @RowCount = COUNT(1)
FROM [dbo].[TableAAA];
DECLARE @intFlag INT;
SET @intFlag = 1;
WHILE ( @intFlag <= @RowCount )
BEGIN
INSERT INTO [dbo].[TableAAA]
( UniqueID ,
company ,
Agent ,
Phone
)
SELECT TOP 1
( SELECT MAX(UniqueID) + 1
FROM [dbo].[TableAAA]
) ,
'New Company' ,
Agent ,
Phone
FROM [dbo].[TableAAA] c
WHERE c.companyid = 'Old Company'
AND c.phone NOT IN ( SELECT Phone
FROM [dbo].[TableAAA]
WHERE company = 'New Company' );
SET @intFlag = @intFlag + 1;
END;