Вставка отдельных значений из одной таблицы в другую таблицу

Итак, для каждого отдельного значения в столбце одной таблицы я хочу вставить это уникальное значение в строку другой таблицы.

list = select distinct(id) from table0

for distinct_id in list
 insert into table1 (id) values (distinct_id)
end

Любые идеи относительно того, как это сделать?

Ответ 1

Всякий раз, когда вы думаете о том, чтобы что-то делать в цикле, отступите назад и подумайте еще раз. SQL оптимизирован для работы с наборами. Вы можете сделать это, используя запрос на основе набора без необходимости в цикле:

INSERT dbo.table1(id) SELECT DISTINCT id FROM dbo.table0;

Есть несколько случаев, когда цикл может иметь больше смысла, но по мере того, как SQL Server созревает и добавляется больше функциональных возможностей, эти краевые случаи становятся уже и более узкими...

Ответ 2

insert into table1 (id)
select distinct id from table0

Ответ 3

Следующее утверждение работает со мной.

insert into table1(col1, col2) select distinct on (col1) col1 col2 from table0 

Ответ 4

Приведенный ниже запрос также проверит существующие данные в таблице 2.

INSERT INTO Table2(Id) SELECT DISTINCT Id FROM Table1 WHERE Id NOT IN(SELECT Id FROM Table2);

Ответ 5

Другой Простой способ копирования отдельных данных с несколькими столбцами из одной таблицы в другую

Insert into TBL2 
Select * from (Select COL1, ROW_NUMBER() over(PARTITION BY COL1 Order By COL1) AS COL2 From TBL1)T
where T.COL2 = 1

Ответ 6

INSERT INTO tableB SELECT * FROM tableA сгруппировать по запросу

Примечание: пожалуйста, удалите id из обеих таблиц, применяя вышеупомянутый запрос.