2011-09-16 44 views
0

我正在嘗試編寫SQL以根據代碼條件將一些代碼條件更新爲多個列。在運行時更新表和列在編譯時不知道

例如,使其成爲最簡單的一個兩列

UPDATE table set A = valueA where conditionA..

OR UPDATE table set B=valueB where conditionA..

OR UPDATE table set A=valueA, B=valueB where conditionA..

的條件是相同的,但根據值a/VALUEB可能不存在代碼

有沒有方便的方法來組合它們一起在一個SQL中,如選擇一個WHERE 1=1 and <condition>,以便我可以添加條件而不考慮一個或多個條件?

希望它有道理。

+1

歡迎來到StackOverflow。請編輯您的問題,以便使用除「A」和「a」,「B」和「b」等之外的內容。 SQL不區分大小寫,並且您的問題與寫入無關。此外,您可以通過選擇它並在編輯器工具欄中使用類似於「{}」的按鈕來對代碼進行格式化,縮進每行4個空格,或全選並使用Ctrl + K進行選擇。謝謝。 :) –

+0

@Ken White:+1這就是我所說的服務和友善 – Icarus

回答

0

如果使用相同的條件下,你可以編寫查詢只是這樣的:

UPDATE [table] SET A = valueA, B=valueB, C=valueC WHERE <condition> 

但是如果你需要對所有的領域有不同的條件下,你可能在你一個CASE操作是這樣的:

UPDATE [table] SET A = CASE WHEN <cond_for_A> THEN valA ELSE A END, 
    CASE WHEN <cond_for_B> THEN valB ELSE B END, 
    CASE WHEN <cond_for_C> THEN valC ELSE C END 
0

您可能會根據代碼中的某些條件來更改正在更新的字段,這可能意味着您無法僅使用一條SQL語句離開 - 綁定參數無法在SQL中「添加」或「刪除」列文本。

如果列數很少,則可以爲每個感興趣的組合組成一個單獨的SQL語句。否則,您可能需要動態構建SQL文本並填充語句的SET子句,以便它包含您所需的列。

這些都不應該成爲跳過正確綁定所有參數的藉口,不過!