SQL-запрос для отображения самого последнего значения, а затем других ASC - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть таблица с новостями, которые я затем отображаю в слайдере с помощью цикла foreach. Мне нужно настроить порядок сортировки запроса, чтобы всегда добавлялся последний добавленный (максимальный идентификатор), а остальные сортировались по идентификатору ASC.

Итак, пример: Новости 1, 2, 3,4. Мне нужно, чтобы они повторили как 4,1,2,3.

SELECT * FROM news ORDER BY sort ASC

Как сначала добавить еще одно условие в виде max (id), а затем отсортировать ASC?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

или используйте оконную функцию

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY id DESC) AS RN
    FROM news) AS T
ORDER BY CASE WHEN RN = 1 THEN 0 ELSE 1 END, id

SELECT *
FROM (
    SELECT *, MAX(id) OVER () AS MaxID
    FROM news) AS T
ORDER BY CASE WHEN MaxID = id THEN 0 ELSE 1 END, id
0 голосов
/ 26 апреля 2018

Вы можете попробовать этот запрос:

SELECT *
FROM (
   SELECT *,
         (SELECT MAX(Id) FROM news) AS max_id 
   FROM news) AS t
ORDER BY CASE WHEN id = max_id THEN 0 ELSE 1 END asc,
         id ASC

или, используя CROSS JOIN:

SELECT n.*
FROM news AS n
CROSS JOIN (SELECT MAX(Id) AS max_id FROM news) AS m
ORDER BY CASE WHEN n.id = m.max_id THEN 0 ELSE 1 END asc,
         n.id ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...