Я хочу сделать заказ по дате, чтобы получить комментарии пользователя, но я хочу придать важность сегодняшней дате
если есть комментарий сегодня, покажите его первым и сделайте заказ с датой для остальных.
Я пытаюсь сделать это, но всегда даю мне ошибку в синтаксисе
SELECT *
FROM comment
ORDER BY IF('DATE_TIME_COMMENT' = CURRENT_DATE())
есть ли какое-нибудь решение?
Сначала date_time_comment
по CASE
возвращающему "что-то ниже", если date_time_comment
равно current_date()
и "что-то более высокое". Затем, во-вторых, date_time_comment
по date_time_comment
.
SELECT *
FROM comment
ORDER BY CASE date_time_comment
WHEN current_date()
THEN 0
ELSE
1
END,
date_time_comment;
(Возможно, добавьте DESC
после date_time_comment
в предложение ORDER BY
, если вы хотите сначала иметь самые новые комментарии.)
Если у вас нет комментариев с будущей датой, просто закажите по дате
SELECT * FROM comment ORDER BY DATE_TIME_COMMENT DESC
Если у вас может быть будущая дата и вы хотите заказать первую сегодняшнюю дату, то комментарии с другой датой, чем сегодня, один из способов сделать это - с UNION
SELECT * FROM (
SELECT 1 as order, c.* FROM comment c WHERE DATE_TIME_COMMENT = CURRENT_DATE()
UNION ALL
SELECT 2 as order, c.* FROM comment c WHERE DATE_TIME_COMMENT <> CURRENT_DATE()
) order by order asc, DATE_TIME_COMMENT desc
То, что вы получаете первые комментарии сегодня, затем другие комментарии по дате
SELECT * FROM comment ORDER BY DATE_TIME_COMMENT DESC
. Имеется в виду последний комментарий первым.