Mysql Выбрать запись на основе последнего запуска

0

У меня есть таблица, которая имеет следующие поля

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

Я хочу выбрать те записи, которые должны теперь основываться на поле last_job_run. Например, если задача была выполнена вчера и выбрана ежедневно, мне нужен запрос для выбора записи на сегодняшний день, завтра и т.д.

Можно ли это сделать без привлечения PHP?

Теги:

1 ответ

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
    Спасибо! Вы спасатель жизни.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню