Есть ли способ упростить подробный SQL INSERT INTO (..) запрос? - PullRequest
0 голосов
/ 11 мая 2010

У меня есть таблица с одним полем id (autonumber) и 50 другими полями. Таблица нормализована, это 50 свойств материала и т. Д.

Я хочу скопировать запись из этой таблицы в ту же таблицу - будет отличаться только идентификатор автоинкремента. Сейчас я использую запрос

INSERT INTO tableName (field1,field2,....field50)
SELECT field1,field2,....field50 from tableName
WHERE autoid=1234;

Обратите внимание, что я должен набрать ВСЕ 50 имен полей, дважды! Можно ли сократить этот запрос, чтобы мне не приходилось вводить их все?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

Глядя на приведенные выше ответы, основная проблема заключается в том, что вы получите нарушение первичного ключа, если вы выполните insert into <tableName> select * from <tableName>

Вот мое предположение о возможном решении:

SELECT *
INTO #tempTable
FROM TableName
WHERE autoid = 1234

это получает ваши значения. тогда нужно избавиться от удостоверения личности

ALTER TABLE #tempTable
DROP COLUMN autoid

Затем просто вставьте это обратно в основной стол

INSERT INTO tableName
SELECT * FROM #tempTable

Я не пистолет в SqlServer, в основном работал с sybase, поэтому могут возникнуть некоторые синтаксические проблемы. Пожалуйста, не стесняйтесь поправлять меня, я изменю свой ответ

2 голосов
/ 11 мая 2010

Можно сказать:

INSERT INTO tableName
SELECT * from tableName WHERE autoid=1234;
1 голос
/ 11 мая 2010
INSERT INTO tableName
SELECT * from tableName 
WHERE autoid=1234;

Если у вас 50 столбцов в таблице, может быть, вам следует переосмыслить дизайн вашей базы данных?

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