#sql_server
Есть 2 таблицы (гипотетические) TableSource(id int IDENTITY(1,1), value int, order int) TableTarget(id int IDENTITY(1,1), value) И операция вставки данных из первой во вторую INSERT TableTarget(value) SELECT s.value FROM TableSource s WHERE order < 10 Мне нужно как-то получить отображение id записей из TableSource на новые вставленные строки в TableTarget. IdTableSource | idTableTarget ----------------------------- 2 | 1 4 | 2 5 | 3 7 | 4 9 | 5 Возможно есть какой то способ добавить эти данные в OUTPUT, но не нашёл как.
Ответы
Ответ 1
способ добавить эти данные в OUTPUT INSERT не позволяет направлять в OUTPUT любые столбцы из источника (лишь те, которые доступны в inserted). Это возможно только помощью MERGE: MERGE INTO TableTarget T USING ( SELECT id, value FROM TableSource WHERE [order] < 10 ) S ON 1 = 0 WHEN NOT MATCHED THEN INSERT (value) VALUES (S.value) OUTPUT S.id AS idSource, inserted.id AS idTarget;
Комментариев нет:
Отправить комментарий