в 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, правильно упорядочены
Что не что я хочу.