2013-09-27 51 views
0

看起來像一個簡單的問題,但我不能得到我需要在MsSql中,而我可以在MySQL和Oracle中輕鬆完成。從多個條件多次更新

在MySQL: UPDATE table_spec_data SET覆蓋率= 33 WHERE(specification_id,data_id)IN ( (247,1), (248,2), (249,3) );

在Oracle: UPDATE table_spec_data SET覆蓋率= 33 WHERE(specification_id,data_id)IN ( SELECT 247,1 FROM DUAL UNION SELECT 248,2 FROM DUAL UNION SELECT 249,3 FROM DUAL );

有沒有人知道如何去做MSSqlServer

回答

1

我認爲你需要做的是硬的方式:

UPDATE table_spec_data SET coverage=33 WHERE 
    (specification_id = 247 AND data_id = 1) 
    OR (specification_id = 248 AND data_id = 2) 
    OR (specification_id = 249 AND data_id = 3) 
+0

好的非常感謝你。我期待更快的速度......但也許這個執行計劃是在SQLServer上優化的。讓我們看看演出...... – DaveG