Я новичок в SQL Server и делаю некоторую очистку нашей базы данных транзакций. Однако, чтобы выполнить последний шаг, мне нужно обновить столбец в одной таблице одной базы данных со значением из другого столбца в другой таблице из другой базы данных.Проверка синтаксиса массивной команды обновления SQL
Я нашел фрагмент кода обновления SQL и переписал его для собственных нужд, но хотел бы, чтобы кто-то дал ему один раз, прежде чем я нажму кнопку выполнения, так как обновление буквально повлияет на сотни тысяч записей.
Так вот эти две базы данных:
База данных 1: Movement
- Таблица 1:
ItemMovement
- Колонка 1:
LongDescription
(тип данных: текст/до 40 символов)
База данных 2: Item
- Таблица 2:
ItemRecord
- Колонка 2:
Description
(тип данных: текст/до 20 знаков)
Цель: установить Column1
от DB1 к значению Colum2
из db2.
Вот фрагмент кода:
update table1
set table1.longdescription = table2.description
from movement..itemmovement as table1
inner join item..itemrecord as table2 on table1.itemcode = table2.itemcode
where table1.longdescription <> table2.description
Я добавил последний «где» линия для предотвращения SQL от обновления колонки, где она уже соответствует исходной таблице.
Это должно выполняться быстрее и просто обновлять столбцы, содержащие мусор. Но, как оно есть, похоже ли это, что он будет работать? И, наконец, это простой процесс, используя SQL Server 2005 Express, чтобы просто выполнить резервное копирование всего Movement
db до того, как я его выполнил? И если это испортится, просто восстановите его?
В качестве альтернативы, необходимо ли снова перелистывать таблицы как таблицу1 и таблицу 2? Действительно для того, чтобы выполнить такой SQL-запрос:
update movement..itemmovement
set itemmovement.longdescription = itemrecord.description
from movement..itemmovement
inner join item..itemrecord on itemmovement.itemcode = itemrecord.itemcode
where itemmovement.longdescription <> itemrecord.description
Большое спасибо!
Запрос выглядит довольно прилично. Почему бы вам просто не создать новый столбец под названием 'movement.itemmovement.longdescription_test' и обновить его с помощью этого запроса? После обновления вы можете проверить, правильна ли информация в этом поле или нет. Если это правильно, просто запустите 'update movement.itemmovement set longdescription = longdescription_test', а затем отпустите столбец' longdescription_test'? – zedfoxus
Я нахожусь «на дому, обучаемом Google» на SQL, и только узнал о некоторых утверждениях и обновлениях из одной таблицы. Я не знал, что вы можете создать столбец таким образом. Можете ли вы рассказать о синтаксисе или все это будет одинаковым, если я создам его с помощью графического интерфейса SQL Express? Btw, я обновил свой OP с более прямым запросом обновления. Мысли? –
Кто вам дал эту задачу? Знают ли они, что вы спрашиваете такие вещи здесь? – csmckelvey