Сортировка результатов SQL в запросе - PullRequest
0 голосов
/ 06 января 2019

У меня такой запрос:

SELECT A.*, 
       B.surname, 
       B.name, 
       C.url_address, 
       (SELECT Concat(file_path, '/', file_name) AS image 
        FROM   psuploadedfiles B 
        WHERE  enum = 3 
               AND category = A.id_user 
        ORDER  BY number ASC 
        LIMIT  1) AS image2, 
       (SELECT Concat(file_path, '/', file_name) AS image 
        FROM   psuploadedfiles B 
        WHERE  enum = 3 
               AND category = A.post_id 
        ORDER  BY number ASC 
        LIMIT  1) AS image 
FROM   psposts A 
       LEFT JOIN psuserdetails B 
              ON B.id_user = A.id_user 
       LEFT JOIN psuser C 
              ON C.id_user = A.id_user 
WHERE  A.enable = '1' 
       AND ( A.id_user = 21 
              OR ( A.id_user = '7' 
                    OR A.id_user = '1' 
                    OR A.id_user = '5' ) ) 
ORDER  BY date DESC 
LIMIT  0, 25; 

В таблице psPosts у меня есть столбец subscriptions_date (содержащий дату в формате гггг-мм-дд), где subscription_date - это дата до тех пор, пока пост будет повышен.

Как можно отсортировать результаты таким образом, чтобы в верхней части были сообщения, содержащие subscription_date текущую или будущую дату (т.е. повышен), а также под другими сообщениями?

1 Ответ

0 голосов
/ 06 января 2019

Что-то вроде ...

ORDER BY 
    CASE WHEN A.subscriptions_date >= NOW() THEN 0 ELSE 1 END,
    date

Первый критерий сортировки разделяет данные на две группы, с текущими или будущими подписками на первом месте. Внутри каждой группы данные затем сортируются по date.

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