假設我有一個表tbl列ID和標題。 我需要改變標題列的所有值:是否可以使用單個UPDATE SQL語句執行多個更新?
- 從 'A1' 到 'A1',
- 從 'A.1' 到 'A1',
- 從「B-1 '到'b1',
- 從'b.1'到'b1'。
現在,我正在執行兩個UPDATE語句:
UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1')
UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1')
這是不是在所有的問題,如果表是小,單個語句完成,在不到一秒鐘你只需要執行幾條語句。
你可能猜到了 - 我有一個巨大的表格來處理(一個語句在大約90秒內完成),並且我有大量的更新來執行。
那麼,是否有可能合併更新,因此它只會掃描一次表?或者也許,在這種情況下有更好的方法來處理。
編輯:請注意,我正在使用的真實數據以及我必須執行的數據更改並非那麼簡單 - 字符串更長,並且它們不遵循任何模式(它是用戶數據,所以不能做出任何假設 - 可以是任何事情)。
因此,從你的編輯評論推斷,字符串本身可以是不同的,但你嘗試的更新是否遵循一種模式?如果是這樣,那是什麼?如果什麼都沒有模式,那麼沒有解決方案,你必須單獨編碼每個獨特的更新 – 2009-01-05 14:51:14
我有一個*正確*值的列表,並且我有一個明確指定的錯誤*值列表(以及哪個錯誤的值必須是改成正確的值)。所以是的 - 更新確實有一個模式。簡而言之 - 每次更新都會更改一個值,但前提是舊值在指定的值列表中。 – Paulius 2009-01-06 15:37:04