您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在更新查询中动态设置表和字段名称?

如何在更新查询中动态设置表和字段名称?

感谢Harpo的回答。我已经使用该想法来构建以下sql语句。我们有许多表50+,它们都具有相同的数据类型(员工ID),但字段名称可能不同。因此,根据表名称,要更新的字段将有所不同。我实际的WHERE和SET语句比本示例要复杂得多,但这对这个问题并不重要。

我首先创建一个临时表来存储要更新的表/字段。

然后,我遍历这些记录,并生成sql。对于那些不喜欢动态sql的人,您可以只使用一条print语句,然后将其复制粘贴到另一个查询窗口中并执行它。或者,您可以调用EXEC语句。

我想接受您的回答,但后来并没有完全回答我的问题,部分原因是我没有完全解释自己。无论哪种方式,谢谢您的帮助。

DECLARE @TableFieldDictionary TABLE
(
    tablename VARCHAR(100),
    fieldname varchar(100)
)

insert into @TableFieldDictionary(tablename,fieldname) values ('table1','field1');
insert into @TableFieldDictionary(tablename,fieldname) values ('table2','field2');
--put more insert statements here.  In my case, I have 50 inserts


declare cursor_dictionary cursor
for select tablename, fieldname from @TableFieldDictionary

open cursor_dictionary

declare @looptablename VARCHAR(100)
declare @loopfieldname varchar(100)

fetch next from cursor_dictionary
into @looptablename,@loopfieldname

DECLARE @Updatesql AS varchar(max)
WHILE @@FETCH_STATUS = 0
BEGIN   
    SET @Updatesql = 'UPDATE ' + @looptablename + 
                     ' SET ' + @loopfieldname + ' = 123' +
             ' WHERE ' + @loopfieldname + ' = 456'

    print @updatesql
    --EXEC(@updatesql)

    fetch next from cursor_dictionary
    into @looptablename,@loopfieldname
END

CLOSE cursor_dictionary
DEALLOCATE cursor_dictionary
其他 2022/1/1 18:36:43 有552人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶