mysql - MySQL 中使用 ASC/DESC 的情况
问题描述
我使用这个查询来获取文章。如果article sponsor status
为真,则优先显示在顶部。
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
解决方案
看来您需要第二个密钥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”表示假。因此,降序排序将匹配项放在不匹配项之前。
推荐阅读
- kubernetes - Bazel k8s_deploy 不会将 Kubernetes 资源应用到集群
- css - 在Firefox中选择文本时,它们消失了。我们该怎么办?
- javascript - 仅当通过 AJAX 接收的数据不同时才更新 UI
- html - 为什么我看不到有关在 Chrome 浏览器中检查元素的 Angular 2 指令?
- docker - 在 docker 容器中运行的烧瓶应用程序无法从主机访问
- redis - Feathersjs 使用 Redis 撤销 JWT
- rest - 如何知道对我的代码(服务器)进行了哪些 API 调用?与原生 Android 开发人员合作时
- prestashop - 如何在 prestashop 自定义块上获取当前产品链接?
- python - 如何从上下文中获取视图中对象的id?
- c - K&R 练习 1-8 改进