Mysql:根据列的先前值更改列值

时间:2016-03-14 08:02:35

标签: mysql

我想更新列expiry_date只有当已经存储的expiry_date小于new expiry_date时如何实现这个是mysql

  update tbl_user 
  set 
     email="sdhfids@gmail.com' 
     currency="USD" 
     expiry_date=DATE_ADD(NOW(), INTERVAL ".$expiry_date." MONTH) 
  where user_id=1

提前致谢

2 个答案:

答案 0 :(得分:2)

尝试使用CASE

update tbl_user 
 set 
 email='sdhfids@gmail.com' 
 currency='USD' 
 expiry_date= CASE WHEN expiry_date < 'UR NEW DATE' 
                       THEN  DATE_ADD(NOW(), INTERVAL ".$expiry_date." MONTH) 
                   ELSE   expiry_date
               END      
 where user_id=1

答案 1 :(得分:1)

正如@Strawberry评论的那样,GREATEST应该有效:

update tbl_user 
set 
 email="sdhfids@gmail.com' 
 currency="USD" 
 expiry_date=GREATEST(expiry_date, DATE_ADD(NOW(), INTERVAL ".$expiry_date." MONTH))
where user_id=1