Хитрое предложение MYSQL ORDER BY

#mysql #sql-order-by

Вопрос:

У меня есть таблица с именем, фамилией и последующим столбцом. В настоящее время я отображаю результаты в следующем порядке

 ORDER BY followup IS NULL, followup asc, lastname
 

Это помещает строки, в которых есть последующие действия, в начало с датой последующего выполнения, ближайшей к сегодняшнему дню. Затем, если дата продолжения равна НУЛЮ, она сортируется по фамилии.

На самом деле я хочу, чтобы сначала отображались последующие действия, которые происходят в течение недели с сегодняшней даты, затем НУЛЕВЫЕ последующие действия по фамилии, а затем остальные последующие действия, которые происходят более чем через неделю с даты их выполнения.

Не уверен, что это возможно с MYSQL и может потребовать пользовательской функции сортировки в PHP.

Любая помощь будет признательна.

Ответ №1:

пример ИСПОЛЬЗОВАНИЯ

 order by case when followup is null then concat('2',lastname)
              when date_add(followup, interval 7 day) > current_date 
              then concat('1',lastName)
              else concat('3',lastName) end