UPDATE中的CASE用于选择列

时间:2016-06-20 11:10:54

标签: php mysql sql request

您好我想发出请求,选择要更新的栏目

UPDATE `ze_mail` SET 
        (CASE
            WHEN `ze_mail_id` = 1 AND `ze_mail_user1_id` = 27
            THEN(
                `ze_mail_user1_lastDate`
            )
            WHEN `ze_mail_id` = 1 AND `ze_mail_user2_id` = 27
            THEN(
                `ze_mail_user2_lastDate`
            )
        END) 
        = NOW()
WHERE WHEN `ze_mail_id` = 1

获得该

UPDATE `ze_mail` SET `ze_mail_user1_lastDate` = NOW() WHERE `ze_mail_id` = 1

或那

UPDATE `ze_mail` SET `ze_mail_user2_lastDate` = NOW() WHERE `ze_mail_id` = 1

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以更新'两者都使用CASE EXPRESSION,如果它没有回答条件,结果就不会改变:

UPDATE `ze_mail`
  SET `ze_mail_user1_lastDate` = CASE WHEN `ze_mail_user1_id` = 27
                                      THEN NOW() 
                                      ELSE `ze_mail_user1_lastDate`
                                 END,
       `ze_mail_user2_lastDate` = CASE WHEN `ze_mail_user2_id` = 27
                                      THEN NOW() 
                                      ELSE `ze_mail_user2_lastDate`
                                 END
WHERE `ze_mail_id` = 1

备注:

WHERE WHEN错了,一个简单的WHERE就足够了。

CASE是一个表达式,它只能提供一个值。

您不需要在ze_mail_id = 1上使用CASE EXPRESSION,因为您已经过滤了它们。