SqlServer:带变量的迭代查询脚本

SqlServer:带变量的迭代查询脚本,sql,sql-server,Sql,Sql Server,我有一个简单的查询脚本,检查表中是否存在某个值,如果是,则删除该行,我需要使用不同的值运行该行 我不想重复脚本多次并替换值,而是想让它变得简单 我是否可以以迭代的方式进行操作,每次使用不同的值,这些值都将被预定义 谢谢 IF EXISTS( SELECT * FROM table1 WHERE tId = '10') EXEC('UPDATE table2 SET type=N''user'' WHERE id = 10') [ ELSE DELETE FROM tabl2 W

我有一个简单的查询脚本,检查表中是否存在某个值,如果是,则删除该行,我需要使用不同的值运行该行

我不想重复脚本多次并替换值,而是想让它变得简单

我是否可以以迭代的方式进行操作,每次使用不同的值,这些值都将被预定义

谢谢

IF EXISTS( SELECT * FROM table1 WHERE tId = '10')
    EXEC('UPDATE table2 SET type=N''user'' WHERE id = 10') 
[ ELSE
    DELETE FROM tabl2 WHERE id = 10
]

这里的值10,我想将其视为变量,这样我就可以使用不同的预定义值来迭代此查询,因此看起来您试图将tabl2.type设置为table1中ID所在的用户,否则就删除记录

正如肖恩·兰格所说,不要让它重复,而是尝试这样的方法:

--update the records in table2 that have a record in table1
update  table2
set     type='user'
where   id in (
    select  tID
    from    table1
    where   tID in (10,11,12...n)
    )

--delete the records in table2 that lack a record in table1
delete  table2
where   id not in (
    select  tID
    from    table1
    where   tID in (10,11,12...n)
    )

尽可能避免通过折磨行来处理RBAR行,而是利用记录集。

为什么要使其迭代?这意味着您要做RBAR,这将要慢得多。为什么不一次删除它们呢?从键入KeyValue1、KeyValue2等的表中删除