基于 2 个其他列 Oracle 的 UPDATE 列

Ram*_*Ram 1 sql oracle

我的表有 5 列。我想要

UPDATE Column5='TEACHER' IF Column2='Y' 
AND 
UPDATE Column5='STUDENT' IF Column3='Y' 
Run Code Online (Sandbox Code Playgroud)

我可以在一个语句中做到这一点吗?

Jus*_*ave 5

您可能可以使用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'
Run Code Online (Sandbox Code Playgroud)

我猜你不想更新两个条件都不满足的行。如果您想更新每一行,您需要删除该WHERE子句,并且您可能需要调整两个条件都不满足的行的默认值(在ELSECASE)。