我有很长的脚本从表中的大量(超过100+)删除某些特定的数据,它看起来像这样更好的办法:处理许多delete语句
...
Delete from Table_name WHERE Company not in ('Company1','Company2')
Delete from Table_name WHERE Company not in ('Company1','Company2')
Delete from Table_name WHERE Company not in ('Company1','Company2')
Delete from Table_name WHERE Company not in ('Company1','Company2')
...
我想改变这个,所以我不必改变每一行的变量,我希望能够在开始时设置where语句,并且这将改变所有的删除行
declare .....something something
SELECT CompanyID
FROM _Company
WHERE Company in ('Company1','Company2') -- I want to change this where statement only
Delete from Table_name WHERE Company not in (variable)
Delete from Table_name WHERE Company not in (variable)
Delete from Table_name WHERE Company not in (variable)
Delete from Table_name WHERE Company not in (variable)
请记住,如果单个事务尝试从任何给定表中删除超过5000行,SQL Server将执行**锁升级**。这会在该表上放置一个**独占锁**,甚至在该事务被提交(或回滚)之前阻止从该表中选择“SELECT”。尽量避免一次删除超过5000行 –