我有一个 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) 之后。
如何使用此查询切换它们?
答案 0 :(得分:0)
使用布尔值进行排序,将它们明确地放在首位。然后您可以分别对每个组进行排序:
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