SQL хочу дублировать запись при вставке - PullRequest
1 голос
/ 04 мая 2011

Без использования while или forloop, есть ли способ вставить запись два или более раз на одну вставку?

Спасибо

INSERT INTO TABLE2 ((VALUE,VALUE)
SELECT VALUE,VALUE FROM TABLE1 )) *  2

Ответы [ 3 ]

2 голосов
/ 04 мая 2011

Вам потребуется CROSS JOIN на таблицу с 2 строками. Следующее будет работать в SQL Server.

INSERT INTO TABLE2 ((VALUE,VALUE)

SELECT VALUE,VALUE 
FROM TABLE1, (SELECT 1 UNION ALL SELECT 2) T(C)

Если у вас есть таблица вспомогательных номеров, вы также можете сделать

SELECT VALUE,VALUE 
FROM TABLE1 JOIN Numbers ON N <=2 
1 голос
/ 04 мая 2011

- сначала создайте фиктивную таблицу с 2 записями

INSERT INTO TABLE2 ((VALUE,VALUE)
SELECT VALUE,VALUE FROM TABLE1, dummytable ))
0 голосов
/ 04 мая 2011

Это не элегантный способ, но может сработать легко.Если у вас есть таблица с достаточно большим количеством записей, вы можете выполнить перекрестное объединение с помощью предложения TOP

INSERT INTO TABLE2 
SELECT VALUE,VALUE FROM TABLE1 
cross join (select top 2 TABLE_DUMMY) as DUMMY

Это работает для MQ SqlServer, чтобы он работал в других СУБД, вам следует изменить TOP с помощьюключевое слово, необходимое вашей СУБД

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...