2012-02-06 63 views
1

我一直在试图找出一个查询,将做如下检查NULL值:添加日期和MYSQL

  1. 检查last_service记录,并添加这是基于每天next_service日期字段delivery_frequency记录MySQL的。
  2. 但是,如果last_serviceNULLEmpty,则将last_service更新为今天的日期,然后再执行步骤1。

我知道怎么做的第一步是下面的查询:

UPDATE events SET next_service = DATE_ADD(last_service,INTERVAL 14 DAY) WHERE order_product_id = 3; 

但有些我发现第2步棘手。有人能告诉我该怎么做吗?

我正在使用这些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; 

回答

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('2011-12-31', CURRENT_DATE) 

回报2011-12-31

coalesce(null, CURRENT_DATE) 

回报2012-02-06这是CURRENT_DATE

+0

OK,严重这是真棒,你怎么想出了这个答案。看起来正是我一直在寻找的东西。 – Tarik 2012-02-06 00:43:57

+0

很高兴我能帮忙:-) – 2012-02-06 00:46:42