У меня есть две таблицы: Table1 и Table2, которые имеют N нет. столбцов. Мне нужно обновить таблицу 1 на основе таблицы2. Я хочу обновить все столбцы таблицы 1, которые перечислены в одном столбце в таблице2.Обновление таблицы SQL с соединением
EG
Table1 A B C D E . . .
1 2 3 4 5 . . .
7 6 5 4 3 . . .
Table2 X Y Col_Nam Col_Value
1 2 C 8
1 2 D 9
7 6 E 10
7 6 C 20
. . . .
. . . .
обновить все столбцы в табл.1, которые перечислены в Table2 при сопоставлении следующего условия Table1.A = Table2.X и Table1.B = Table2.Y
Платформа - это SQL Server. Что я ищу - это динамическое решение, потому что я не знаю имена столбцов, которые я собираюсь обновить. Таблица 1 может иметь N нет. столбцов, которые необходимо обновить. Я попробовал использовать Cursor.
DECLARE @s Varchar(MAX), @key1 VARCHAR(MAX), @key2 VARCHAR(MAX), @Cname VARCHAR(MAX), @CValue VARCHAR(MAX)
DECLARE crs CURSOR FOR SELECT * FROM Table2
OPEN crs;
FETCH NEXT FROM crs inTO @key1,@key2,@Cname,@Cvalue;
WHILE @@FETCH_STATUS = 0
BEGIN
set @s =
'Update T1 SET ' + @FieldName + ' = ''' + @FieldValue +
''' from Table1 T1' +
' where T1.A = ''' + @key1 +
''' and T1.B = ''' + @key2
exec(@s)
FETCH NEXT FROM crs inTO @key1,@key2,@Cname,@Cvalue;
END
CLOSE crs
DEALLOCATE crs
Как-то не работает, и я хочу поставить значение по умолчанию для всех тех записей, которые не соответствуя где состояние.
Любое другое решение или помощь будут оценены.
Существует стандартный способ сделать это, но конкретная платформа (SQL Server, Oracle, DB2, MySQL и т.д.) имеют "ярлыки", которые быстрее. Какая платформа? – Hogan
Относительная нота: http://english.stackexchange.com/questions/68169/is-updation-a-correct-word –
@JamesMohler Я сделал обновление для названия. – Hogan