2013-04-27 54 views
-1

我有一個類似下面的表格,其中我使用遊標進行迭代以替換另一個值。 有沒有辦法在SQL中使用set操作來做到這一點?T-SQL:爲遊標操作設置操作等效

在此示例中,我將用值爲255的列替換值爲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 

回答

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