我有一个表,该表由每日预定作业填充,删除最近7天的数据,然后重新填充来自其他来源(大型机)的最近7天的数据.
最近,用户报告了一些重复数据,可追溯到2011年10月初......数十万行.
我注意到每个作业运行的删除都有奇怪的行为:
DELETE FROM fm104d
WHERE location = '18'
AND (CONVERT(datetime,CASE WHEN ISDATE(pull_date)=0 THEN '19000101'
ELSE pull_date END)) > DATEADD(day, -7, getdate())
Run Code Online (Sandbox Code Playgroud)
以上返回"(0行(s)受影响)".
当我用SELECT*替换DELETE后运行上面的操作时,我获得了32,000多行作为回报.
为什么SELECT和DELETE的行为会有所不同?
UPDATE
这是实际执行计划: