我有一个简单的查询脚本(检查表中是否存在某个值,如果是,则删除该行),我需要使用不同的值运行。
我没有多次复制脚本并替换值,而是希望简化。
我可以以迭代方式进行,每次使用不同的值时,会预定义值吗?
感谢。
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,我想将其视为变量,以便我使用不同的预定义值迭代此查询
答案 0 :(得分:0)
所以看起来您正试图将tabl2.type
设置为用户,其中ID存在于table1
中,否则会删除该记录。
就像Sean Lange所说的那样,不要迭代,尝试这样的事情:
--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(通过痛苦行划线),而是利用记录集。