Сортировка с использованием GREATEST
:
SELECT question_id, question_date, connection_id, connection_date
FROM yourTable
ORDER BY GREATEST(question_date, COALESCE(connection_date, question_date)) DESC;
Для объяснения того, почему используется COALESCE
, в случае, если connection_date
be NULL
, мы игнорируем его и используем только question_date
.В этом ответе предполагается, что question_date
никогда не будет NULL
.
На основании комментария @strawberry, если вы сохраняете свои даты в виде текста, то нам придется сделать дополнительный вызов STR_TO_DATE
:
SELECT question_id, question_date, connection_id, connection_date
FROM yourTable
ORDER BY
GREATEST(STR_TO_DATE(question_date, '%d-%m-%Y'),
COALESCE(STR_TO_DATE(connection_date, '%d-%m-%Y'),
STR_TO_DATE(question_date, '%d-%m-%Y'))) DESC;
Пожалуйста, не храните даты в виде текста, а вместо этого используйте правильный столбец даты.