2010-08-21 68 views
0

Mysql的選擇記錄我有一個表已下列領域基於上次運行

project_name  VARCHAR (100) 
running_frequency enum ('daily', 'weekly', 'monthly') 
last_job_run  DATETIME 

我要選擇那些由於現在基於last_job_run場的記錄。例如,如果某個任務昨天已經運行並且每天都選中,那麼我需要一個查詢來選擇今天,明天等等的記錄。

有沒有可能做到這一點,而不涉及PHP?

回答

3

用途:

SELECT t.* 
    FROM TABLE t 
WHERE ( t.running_frequency = 'daily' 
     AND t.last_job_run < CURRENT_DATE) 
    OR ( t.running_frequency = 'weekly' 
     AND t.last_job_run <= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)) 
    OR ( t.running_frequency = 'monthly' 
     AND t.last_job_run <= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)) 

這可能跑得更快的UNION聲明:

SELECT x.* 
    FROM TABLE x 
WHERE x.running_frequency = 'daily' 
    AND x.last_job_run < CURRENT_DATE 
UNION ALL 
SELECT y.* 
    FROM TABLE y 
WHERE y.running_frequency = 'weekly' 
    AND y.last_job_run <= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
UNION ALL 
SELECT z.* 
    FROM TABLE z 
WHERE z.running_frequency = 'monthly' 
    AND z.last_job_run <= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) 
+0

謝謝!你是生命的救星。 – Maximus 2010-08-22 02:34:30