2012-02-06 44 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