仅当文本值等于特定文本时才如何更新?

时间:2019-04-05 23:17:41

标签: mysql sql

仅当参数status等于'CREATED''NEWSTATUS'时,才需要更新行。我正在尝试使用以下代码来完成此操作,但这仍然是错误的。

UPDATE table t
SET t.otherId, t.status =
    CASE 
        WHEN (SELECT t.status FROM table t WHERE t.idRow) = 'CREATED' THEN '10', 'NEWSTATUS'
    END
WHERE t.idRow = 23

我该怎么办?

3 个答案:

答案 0 :(得分:0)

听起来像您只需要带有UPDATE子句的简单WHERE

UPDATE table
       SET status = 'NEWSTATUS'
       WHERE status = 'CREATED';

答案 1 :(得分:0)

您只是在寻找...:

UPDATE table SET otherId = 10, status = 'NEWSTATUS' WHERE idRow = 23 AND status = 'CREATED'

答案 2 :(得分:0)

我认为您需要一个CASE表达式来分配status

UPDATE table t
    SET t.otherId,
        t.status = (CASE WHEN t.status = 'CREATED' 
                         THEN '10' ELSE 'NEWSTATUS'
                    END)
    WHERE t.idRow = 23;