2012-08-30 55 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 - 在这种情况下没有必要。如果目标是更新表格中的每一行以显示默认值的位置,我将它包括在内。 –