T-SQL:为游标操作设置操作等效项

时间:2013-04-27 03:33:28

标签: sql-server tsql cursor set-operations

我有一个像下面这样的表,我使用游标迭代替换另一个值。 有没有办法在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

2 个答案:

答案 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