小编Mar*_*ytz的帖子

SQL Server DELETE和SELECT与不同的WHERE子句表现不同

我有一个表,该表由每日预定作业填充,删除最近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

这是实际执行计划:

http://pastie.org/2869202

sql sql-server

18
推荐指数
1
解决办法
760
查看次数

标签 统计

sql ×1

sql-server ×1