我还是很多核心SQL的新手,所以这就是我的问题:
我有一个包含很多名为C441
,C442
,C443
等列的表格,我试图循环它们并更改{{1}在所有这些中,值为1,这是我尝试过的:
SMALLINT
它会正确打印列名称,例如
DECLARE @count INT;
DECLARE @field varchar(max);
SET @count = 441;
WHILE (@count < 551)
BEGIN
SET @field = ('C' + CAST(@count AS VARCHAR));
PRINT @field;
UPDATE #tablenamenotrelevant#
SET @field = 1
WHERE [MemberId] = 1060;
SET @count = (@count + 1);
END
但是当我从表中选择值时,它们没有被改变,我错过了什么简单的事情?
我正在使用SQL Server 2012 Management Studio。
答案 0 :(得分:2)
您需要使用动态TSQL:
declare @sql varchar(1000)
set @sql = 'UPDATE #tablenamenotrelevant# SET ' + @field + ' = 1 WHERE [MemberId] = 1060;'
exec (@sql)
或者可能更好,创建一个设置所有相关列的单个更新语句并执行它。