【问题标题】:Updating mysql table field only when condition is met仅在满足条件时更新mysql表字段
【发布时间】:2014-03-25 09:17:40
【问题描述】:

我有这个问题:

UPDATE orders SET tracking = '$trackingnumber', tracking_timestamp = NOW() 
WHERE comment like '%$ordernumber%'

是否可以仅在字段值为 0000-00-00 00:00:00 时更新 tracking_timestamp?

【问题讨论】:

  • 它应该始终更新跟踪列。

标签: mysql conditional-statements


【解决方案1】:

您可以使用CASE

UPDATE orders 
SET tracking = '$trackingnumber',
 tracking_timestamp = CASE 
WHEN tracking_timestamp='0000-00-00 00:00:00' 
THEN NOW() 
ELSE tracking_timestamp
 END
WHERE comment like '%$ordernumber%'

【讨论】:

  • 我猜你的意思是 '$tracking_timestamp' 你说的就是 tracking_timestamp?
  • @KristianRafteseth 根据你的问题更新tracking_timestamp 如果tracking_timestamp0000-00-00 00:00:00 对吗?您的问题中没有$tracking_timestamp 变量,所以我提供了字段不变量的案例条件
  • 我的错,这里有点太快了。
  • @KristianRafteseth 你仍然可以更新你的问题:)
  • 是的。可以顺便跳过这里的ELSE子句吗?
【解决方案2】:

使用这个查询

UPDATE orders 
SET tracking = '$trackingnumber', 
tracking_timestamp = IF (tracking_timestamp='0000-00-00 00:00:00',NOW(),'0000-00-00 00:00:00') 
WHERE COMMENT LIKE '%$ordernumber%'

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多