2017-01-18 66 views
1

我有一個更新查詢來更新表中的記錄,當我做了更新的條件選擇,它顯示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 
+0

你選擇什麼樣子?您的選擇結果中的'filterkey'是否是唯一的? 'table1'上它是唯一的嗎? –

+2

你爲什麼要''加入'到你將要更新的表格? – DVT

+0

你的'CASE'是多餘的。英文<> t.name'的ELSE意味着'英文= t.name',所以在所有的情況下**你都返回't.name'。 (請注意,如果涉及任何'NULL'值,則不會出現這種情況;但是,您的'WHERE'子句不包括這些提示。) –

回答

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行。