我有一个像下面这样的表,我使用游标迭代替换另一个值。 有没有办法在SQL中使用set操作?
在这个例子中,我将值2525的值替换为255,并使用游标进行迭代。
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
答案 0 :(得分:1)
试试这个 -
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
答案 1 :(得分:0)
我认为您需要显示光标代码,以便我们知道您在做什么。如果它只是用另一列替换一列,则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