UPDATE列基于2个其他列Oracle

时间:2012-08-30 01:02:43

标签: sql oracle

我的表有5列。我想

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

我可以在一份声明中这样做吗?

1 个答案:

答案 0 :(得分: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子句,并且可能需要调整默认值(ELSE中的CASE)的行这两种情况都没有得到满足。