Как поместить все «избранное = 1» в начало запроса SQL и отсортировать возврат по определенному столбцу? - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь найти правильный запрос для моей базы данных SQLite, который используется в моем приложении для Android. У меня есть БД, содержащая заметки, в котором есть такие поля, как заголовок, текст, isFavorite, isTrash, creationEpoch ,ifiedEpoch. Что я хочу сделать, это, например, отсортировать запрос БД по модифицированной эпохе ASC / DESC, но поместить все строки, которые являются избранными, сверху.

Я посмотрел на несколько похожих вопросов по stackoverflow, но не могу заставить его работать.

Это пример того, что я пробовал до сих пор:

SELECT *
FROM note
WHERE trash = 0
ORDER BY CASE modified_epoch WHEN favorite = 1 THEN 0 ELSE 1 END DESC,
         favorite DESC

Которые размещают избранное сверху, но не сортируются по модифицированному периоду, а не избранное, кажется, сортируются в порядке ASC.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Попробуйте

SELECT * 
FROM note 
WHERE trash = 0 
ORDER BY CASE WHEN favorite = 1 THEN 0 ELSE 1 END, modified_epoch DESC

любимый = 1 идти первым, упорядоченным по изменению_эпоха, все остальные любимые = 0, 2, ... следуют упорядоченным измененным изменением

1 голос
/ 13 июня 2019

Требуются два критерия сортировки:

  • сначала сортировка на основе isFavorite
  • , а затем на модифицированную эпоху

Предполагается, что isFavorite может быть 0 или 1, этоследует работать:

ORDER BY isFavorite DESC
       , modifiedEpoch DESC

Это ставит все предпочтения на первое место, причем самые последние - самые первые, затем следуют не предпочтения, снова начиная с самых последних (из-за DESC наifiedEpoch).

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