SQL Server更新返回错误的值

时间:2013-04-14 16:19:25

标签: sql-server

我有一个更新查询,返回错误的结果。

UPDATE StagingWarehouse.dbo.BusinessLeads
SET    CompanyFK = c.CustomerPK
FROM   StagingWarehouse.dbo.BusinessLeads s
       INNER JOIN DataWarehouse.dim.Customer c
         ON c.CustomerBK = s.CompanyBK
WHERE  s.businessleadbk = 5796722

在运行此语句后从businessleadbk = 5796722选择StagingWarehouse.dbo.BusinessLeads时,CompanyFK设置为11024703.问题在于CustomerPK DataWarehouse.dim.Customer上的SELECT c.* FROM StagingWarehouse.dbo.BusinessLeads s INNER JOIN DataWarehouse.dim.Customer c ON c.CustomerBK = s.CompanyBK WHERE s.businessleadbk = 5796722 11024703不存在并且运行以下查询不会返回任何结果,所以我不知道从哪里得到该数字。

{{1}}

1 个答案:

答案 0 :(得分:1)

UPDATE计划如下所示

Update

计划中的所有操作员都排放了1行。

SELECT计划

Select

CustomerBK Customer上的{{1}}索引中找到该行后,该行会消失,而SQL Server会在同一个表上查找聚簇索引中的相应PK。这表明存在某种腐败现象。也许NCI与CI相比还有一行,或者某种方式存储在NCI中的PK值无效。

我会跑DBCC CHECKTABLE