我需要關於邏輯的建議。有一個在應用程序更新查詢類似下面獲取有關SQL更新記錄的詳細信息
UPDATE TABLE
SET FLAG = CASE
WHEN FLAG = 'IP' THEN 'P'
WHEN FLAG = 'IH' THEN 'H'
WHEN FLAG = 'IM' THEN 'M'
END
WHERE ADJUSTMENT_ID IN (SELECT Query)
此更新是從Java函數返回void
執行。
現在我還需要獲取更新記錄的詳細信息(表TABLE中有少量列),並返回LIST
而不是void
。
由於性能原因,首先運行SELECT並更新循環中的記錄不是一個選項。記錄更新爲單個UPDATE語句,因爲它應該運行得更快。
對我來說,保持可比較的性能會有哪些選擇?我應該使用存儲過程嗎?
無關,而是:如果'flag'包含比'IP','IH'或'IM'列將更新爲'null'任何其他值。如果where子句有可能選擇具有其他值的行,則應該在case語句 –
中添加一個else標誌,謝謝。我錯過了提及這一點。這種情況出現在WHERE子句中,AND FLAG IN('IP','IH','IM')' –