Как отсортировать по двум значениям как desc в одном запросе sql? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть таблица объявлений.Там у меня есть две даты.Вы можете поставить adv и добавить опцию, чтобы показать топ в списке.Я создал top_list_end_date, и я могу сделать заказ к этой дате просто.это другая дата up_date, если ваш рекламный объявление находится на второй странице или снизу, вы можете обновить дату и выглядит так, будто новый рекламный лист должен быть в верхней части списка.

SELECT id, up_date, top_list_end_date 
FROM advertisements
ORDER BY top_list_end_date desc, up_date desc;

Но это не работает.enter image description here Я хотел бы, чтобы ID объявления 202 был первым в результатах, потому что up_date выше.Как я могу сделать это в одном sql?

ОБНОВЛЕННЫЙ ответ Спасибо всем за помощь.Благодаря вам я нашел ответ:

SELECT *
FROM (
    SELECT 1 as own, id, up_date , top_list_end_date FROM advertisements WHERE top_list_end_date > now()
    UNION ALL
    SELECT 2 as own, id, up_date, top_list_end_date FROM advertisements  WHERE top_list_end_date IS NULL

) a
order by own, up_date desc

результат

enter image description here

У меня есть две группы.Сначала с top_list_end_date, затем без этой даты.Обе группы должны быть отсортированы только по up_date, но я хочу показать первую группу № 1 (top_list_end_date) и ниже группы 2 все остальные.

, как вы можете видеть, 197 - первая причина, по которой существует top_list_end_date, а up_date самая высокая.и то же самое во второй группе с идентификатором 213 до даты наивысшего.

:) Еще раз спасибо

1 Ответ

0 голосов
/ 23 февраля 2019

Вы, похоже, хотите coalesce():

SELECT id, up_date, top_list_end_date 
FROM advertisements
ORDER BY COALESCE(top_list_end_date, up_date) desc;

Если дата верхнего списка - NULL, то используется дата обновления.

Примечание. Возможно, вам также понадобитсянаибольшее значение.Если так:

SELECT id, up_date, top_list_end_date 
FROM advertisements
ORDER BY (CASE WHEN top_list_end_date < up_date OR top_list_end_date IS NULL
               THEN up_date
               ELSE top_list_end_date
          END) desc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...