更新查询不更新所有记录

时间:2017-01-18 06:29:04

标签: sql sql-server tsql sql-update

我有一个更新查询来更新表中的记录,当我对要更新的条件进行选择时,它显示存在与条件匹配的715条记录,但是当我运行更新查询时,只有15条记录得到更新。谁能帮我这个。我已将excel表中的数据加载到临时表中进行比较。

    BEGIN TRAN 
    UPDATE table1
    SET    English = CASE 
                  WHEN English <> t.name THEN t.name 
                  else English 
                END

   FROM   #tempdata t 
   LEFT JOIN dbo.Main m 
          ON m.Code= t.[property] 
   LEFT JOIN table1 tbv 
          ON m.filterkey= tbv.filterkey
   where t.name != tbv.English 
   ROLLBACK TRAN 

1 个答案:

答案 0 :(得分:4)

最有可能的联接是从table1复制您的数据。以下是复制的测试场景:

SET NOCOUNT ON

DECLARE @table1 TABLE(id INT, col INT)
DECLARE @table2 TABLE(id INT, rel_id int)

INSERT INTO @table1 VALUES(1, NULL),(2, null)
INSERT INTO @table2 VALUES(1, 1),(2, 1),(3,2)


SELECT * FROM @table1 t1
JOIN @table2 t2 ON t2.rel_id = t1.id

SET NOCOUNT OFF

UPDATE t1 SET col = t2.id
FROM @table1 t1
JOIN @table2 t2 ON t2.rel_id = t1.id

这会选择3,但只更新2行。