我有两个表,表1和表2,其中有N号。列。我需要根据表2更新Table1。我想更新Table1中列出的Table1中的所有列。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中被表2中符合以下条件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服务器,Oracle,DB2,MySQL的等),具有更快 “捷径”。什么平台? – Hogan
在相关说明:http://english.stackexchange.com/questions/68169/is-updation-a-correct-word –
@JamesMohler我做了更新的标题。 – Hogan