SQlite заказ на две даты в php - PullRequest
0 голосов
/ 03 апреля 2020

в sqlite У меня есть таблица files с двумя столбцами, в которых содержатся следующие данные:

  • mod_date (как Unix -Timestamp) (дата, когда файл был создан / изменен в соответствии с filemtime)
  • exif_datetime (Unix -Timestamp) (дата создания файла, в соответствии с данными exif в файле)

Теперь я хотел бы вывести все строки, отсортированные по обоим значениям. Если exif_datetime не существует, он должен использовать mod_date , так что в итоге у меня есть список, который использует exif_datetime и mod_date (если exif_datetime равно NULL) для сортировки. Другими словами, я бы хотел отсортировать по mod_date, но если exif_datetime существует, он должен переопределить значение mod_date.

Я пробовал несколько запросов, но ни один не работал так, как я задумал:

SELECT * FROM (SELECT * FROM files ORDER BY mod_date DESC) ORDER BY exif_datetime DESC дает мне все файлы, где exif_datetime имеет значение NULL вверху, что, как я думаю, является своего рода намерением.

SELECT * FROM files ORDER BY IFNULL(exif_datetime, mod_date) DESC дает мне тот же результат, который я не совсем понимаю.

Как мне этого добиться?

Редактировать: Некоторые примеры данных:

         mod_date    |  exif_datetime
file1    1585908566     1365505889
file2    1585564090     NULL
file3    1585908760     1585850649

Ожидаемый результат:

file3
file2
file1

Неправильный результат:

file3
file1
file2

С IFNULL в утверждении он упорядочивает его в

Все файлы с exif_datetime, правильно упорядочены

Все Файлы с mod_date, правильно упорядочены

Что не что я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...