Sql server T-SQL:设置游标操作的等效操作
我有一个如下所示的表,其中我使用游标迭代以替换一个值。 有没有办法在SQL中使用集合操作来实现这一点 在本例中,我将用值255替换值2525的列,并使用游标进行迭代Sql server T-SQL:设置游标操作的等效操作,sql-server,tsql,cursor,set-operations,Sql Server,Tsql,Cursor,Set Operations,我有一个如下所示的表,其中我使用游标迭代以替换一个值。 有没有办法在SQL中使用集合操作来实现这一点 在本例中,我将用值255替换值2525的列,并使用游标进行迭代 company_name_id replacement_company_name_id 2525 255 11000201010737 10000701010293 12000301010533 12000301010532 以下是我正在运行的代码: declare @compan
company_name_id replacement_company_name_id
2525 255
11000201010737 10000701010293
12000301010533 12000301010532
以下是我正在运行的代码:
declare @company_name_id bigint, @replacement_company_name_id bigint
declare company_name_cursor cursor for
select
company_name_id
, replacement_company_name_id
from #replacements
open company_name_cursor
fetch next from company_name_cursor into @company_name_id, @replacement_company_name_id
while @@FETCH_STATUS <> -1
begin
update user_job_during_school_job
set company_name_id = @replacement_company_name_id
where company_name_id = @company_name_id
fetch next from company_name_cursor into @company_name_id, @replacement_company_name_id
end
close company_name_cursor
deallocate company_name_cursor
我认为您需要显示游标的代码,以便我们知道您在做什么。如果只是将一列替换为另一列,则UPDATE语句可以做到这一点
UPDATE myTable SET
company_name_id = replacement_company_name_id
如果限制值2525,则添加WHERE子句
UPDATE myTable SET
company_name_id = replacement_company_name_id
WHERE
company_name_id = 2525
试试这个-
UPDATE uj
SET company_name_id = r.replacement_company_name_id
FROM dbo.user_job_during_school_job uj
JOIN #replacements r ON uj.company_name_id = r.company_name_id