-1

我有一个如下表,我在其中使用游标进行迭代以将一个值替换为另一个值。有没有办法在 SQL 中使用集合操作来做到这一点?

在此示例中,我将使用值 255 替换值为 2525 的列,并使用游标进行迭代。

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
4

2 回答 2

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
于 2013-04-27T08:25:59.427 回答
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
于 2013-04-27T03:41:37.120 回答