2012-08-30 50 views
1

我的表格有5列。我想基於2個其他列的更新列Oracle

UPDATE Column5='TEACHER' IF Column2='Y' 
AND 
UPDATE Column5='STUDENT' IF Column3='Y' 

我可以在一個聲明中做到這一點嗎?

+1

如果「Column2」和「Column3」都是「Y」,該怎麼辦? –

回答

4

您或許可以使用CASE語句。我的猜測是,你想要這樣的東西

UPDATE table_name 
    SET column5 = (CASE WHEN column2 = 'Y' 
         THEN 'TEACHER' 
         WHEN column3 = 'Y' 
         THEN 'STUDENT' 
         ELSE null 
        END) 
WHERE column2 = 'Y' 
    OR column3 = 'Y' 

我猜你不想更新任何條件都不滿足的行。如果要更新每一行,則需要刪除WHERE子句,並且您可能需要調整哪些行都不符合條件的行,以調整默認值(CASE中的ELSE)的默認值。

+0

你不需要用你的好代碼的ELSE null;) – Parallelis

+0

@Parallelis - 在這種情況下沒有必要。如果目標是更新表格中的每一行以顯示默認值的位置,我將它包括在內。 –