2015-06-04 91 views
1

我有一個表中的Oracle,其具有4個屬性具有以下值更新同一表的Oracle SQL - 基於另一屬性值

attribute_a  attribute_b attribute_c  attribute_d 

     abcd1     1    0 
     abcd1     2    1 
     abcd1     3    0 

     def1     1    1 
     def1     2    1 

我想更新與「邏輯AND」的值到attribute_d取決於attribute_d對於屬性_c
中的值,即對於abcd1,邏輯AND爲0.我想更新表中值爲0的屬性_d
中的abcd1,對於def1,我想更新def1的attribute_d中值爲1的表。我可以使用MERGE來完成此任務,如果有人能給我一個非常感謝的查詢。

+0

你的意思是按位與來代替。 – Rahul

+1

爲什麼要更新表格?存儲像這樣的計算值通常是一個壞主意。 (數據不一致...)創建一個視圖,即使在其他列已更新之後,該視圖始終具有新的attribute_d值。 (如果您確實必須存儲attribute_d值,請使用觸發器來處理它的更新。) – jarlh

回答

0

首先,我同意@ jarlh關於存儲計算值的評論。

解決方案:

UPDATE [TableName] 
SET attribute d = (CASE WHEN attribute_b = attribute c THEN 1 ELSE 0 END) 
相關問題