我使用此查询来获取文章。如果article sponsor status
为true,则优先显示在顶部。
SELECT article_id, article_name, article_image, article_url,
article_feature_status, article_sponsor_status
FROM articles ORDER BY CASE WHEN article_sponsor_status = 'true' THEN 1 ELSE 2 END DESC
我得到了想要的结果,但我也想获得DESC从新到旧的结果。从此查询开始,从顶部开始进行分析,但我想将其反转。我预期的最后一个“ DESC”无效。我该怎么办?
谢谢!
这有效
SELECT article_id, article_name, article_image, article_url, article_feature_status, article_sponsor_status
FROM articles ORDER BY CASE WHEN article_sponsor_status = 'true' THEN 1 ELSE 2 END ASC, article_id DESC
答案 0 :(得分:0)
似乎您需要ORDER BY
的第二个键。您的数据没有明显的代表日期的列,但类似:
SELECT . . .
FROM articles
ORDER BY CASE WHEN article_sponsor_status = 'true' THEN 1 ELSE 2 END ASC,
<some date field> DESC
在MySQL中,您可以将其简化为:
SELECT . . .
FROM articles
ORDER BY (article_sponsor_status = 'true') DESC,
<some date field> DESC
在数字上下文中,MySQL将布尔值视为数字,“ 1”为真,“ 0”为假。因此,降序排序会将匹配项放在不匹配项之前。