我一直试图找出一个可以执行以下操作的查询:
last_service
条记录,并将基于日期的delivery_frequency
记录添加到mysql中的next_service
日期字段。last_service
为NULL
或Empty
,请将last_service
更新为今天的日期,然后再执行第1步。我知道如何执行以下查询的第一步:
UPDATE events SET next_service = DATE_ADD(last_service,INTERVAL 14 DAY) WHERE order_product_id = 3;
但有点我发现第二步比较棘手。有人可以告诉我该怎么做吗?
我正在使用PHP消费这些,但我不想用PHP进行双重查询或其他事情处理这部分。
您可以按照以下方式思考我要找的内容:
UPDATE events SET next_service = IF last_service IS NOT NULL OR '' THEN
DATE_ADD(last_service,INTERVAL 14 DAY) ELSE SET last_service = CURRENT_DATE AND
DATE_ADD(last_service,INTERVAL 14 DAY) END IF WHERE order_product_id = 3;
答案 0 :(得分:4)
UPDATE events
SET
last_service = coalesce(last_service, CURRENT_DATE),
next_service = DATE_ADD(coalesce(last_service, CURRENT_DATE), INTERVAL 14 DAY)
WHERE order_product_id = 3;
Coalesce返回第一个非空值,以便
coalesce('2011-12-31', CURRENT_DATE)
返回2011-12-31
和
coalesce(null, CURRENT_DATE)
返回2012-02-06
CURRENT_DATE