Проблема с ПОРЯДКОМ ПО РЕГИСТРУ, КОГДА, неправильная позиция строк

#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