Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL:设置游标操作的等效操作_Sql Server_Tsql_Cursor_Set Operations - Fatal编程技术网

Sql server T-SQL:设置游标操作的等效操作

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

我有一个如下所示的表,其中我使用游标迭代以替换一个值。 有没有办法在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

我认为您需要显示游标的代码,以便我们知道您在做什么。如果只是将一列替换为另一列,则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