Обновите SQL для строки из 100 столбцов в таблице на основе другой таблицы с именами столбцов name - PullRequest
2 голосов
/ 12 августа 2011

Одна строка в таблице была ошибочно перезаписана. У меня есть резервная копия таблицы, и мне нужно обновить одну строку в основной таблице с данными резервной копии. Проблема в том, что в таблице почти 100 столбцов. Есть ли простой способ сделать это в SQL Server, чтобы мне не пришлось выписывать это вручную:

set maintable.a = backuptable.a, 
    maintable.b = backuptable.b,......etc.

вплоть до 100-го столбца. Я думаю, что SQL Server Management Studio может знать, что я хочу обновить поля с полями с одинаковыми именами в другой таблице. Есть ли способ сделать это?

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 12 августа 2011
INSERT INTO MainTable
SELECT *
FROM BackUpTable
WHERE RowID = GoodRow

DELETE FROM MainTable
WHERE RowId = BadRow

Просто вставьте «хорошую» строку и удалите «плохую» строку.

Если есть ограничение PK, вы можете удалить / вставить его в обратном порядке.

Этотакже было бы целесообразно заключить это в TRANSACTION.

1 голос
/ 12 августа 2011

В SSMS вы можете перетащить-n-drop узел columns в обозревателе объектов в окно запроса. Он сгенерирует разделенную запятыми строку всех столбцов.

0 голосов
/ 03 октября 2017
> declare @aa varchar (max) set @aa = ''
> 
> select  @aa = 
>     (case when @aa = ''
>     then column_name
>     else @aa + coalesce(', ' + column_name+'= '+column_name, '')
>     end) from amicus.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'People' print @aa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...