#mysql #sql
#mysql #sql
Вопрос:
У меня есть SQL-запрос, как показано ниже:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts
LEFT JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
WHERE 1=1
AND wp_posts.post_type = 'seminar'
AND wp_posts.post_status = 'publish'
AND wp_postmeta.meta_key = 'end'
ORDER BY CASE WHEN wp_postmeta.meta_value 0 > 20210126 THEN wp_postmeta.meta_value 0 END ASC, wp_postmeta.meta_value 0 DESC
LIMIT 0, 10
Я хочу показать, что строки имеют meta_value
значение столбца больше, чем 20210126 сверху, но они появились после условия заказа по умолчанию (wp_postmeta.meta_value 0 DESC).
Как я могу переключить их с помощью этого запроса?
Ответ №1:
Используйте логическое значение для упорядочения, чтобы явно поместить их первыми. Затем вы можете заказать каждую из групп отдельно:
ORDER BY (wp_postmeta.meta_value 0 > 20210126) DESC, -- put the bigger ones first
(CASE WHEN wp_postmeta.meta_value 0 > 20210126 THEN wp_postmeta.meta_value 0 END) ASC,
wp_postmeta.meta_value 0 DESC