У меня следующий запрос PostgreSQL.
SELECT id FROM table WHERE user_id=$user_id ORDER BY
CASE
WHEN (date_completed_utc='0000-00-00 00:00:00') THEN 0 ELSE 1 END ASC
Вот пример того, что в таблице:
date_requested_utc всегда является прошедшей датой.
date_completed_utc по умолчанию устанавливается на «0000-00-00 00:00:00», но позднее изменяется на дату, более новую, чем date_requested_utc .
То, что я пытаюсь сделать, это:
Если date_completed_utc является значением по умолчанию, то все эти строки будут выше всех остальных, но эти строки отсортированы по date_requested_utc по убыванию.
Но если date_completed_utc не является значением по умолчанию, поместите эти строки внизу и упорядочите эти строки на date_completed_utc по убыванию.
Результирующий порядок по идентификатору должен быть следующим:
26, 20, 18, 17, 15, 16, 27, 28
Я пробовал все эти различные операторы CASE, но, похоже, не могу понять это правильно.