mysql - 多个 ORDER BY
问题描述
我完全迷失在 OrderBy 条款中。
订购后我需要这个结果: ID's: 8, 5, 2, 1, 4, 6, 7, 3
这些规则必须按以下顺序应用:
- 前 3 = 1
- 顶部2 = 1
- 顶部1 = 1
- 按 ASC 顺序,但顺序为“NULL”或 0 到行尾
有没有可能做这个订购?
谢谢你们!
解决方案
我会将您的要求翻译为:
order by
top3 desc,
top2 desc,
top1 desc,
nullif(`order`, 0) nulls last
最后一个标准通过升序缩短order
,同时保持null
s 和0
值最后。
请注意,这order
是所有 SQL 方言中的保留字,因此不是列名的好选择。
推荐阅读
- javascript - 如何使用选择选项中的数组值作为 url 中的参数?
- javascript - 画布上的粒子被绘制,但没有动画?
- database - 使用映射表保持一致性的最佳方法
- python - BeautifulSoup 的编码/解码问题
- git - Github SSH 访问:权限被拒绝(公钥)
- javascript - 将 JSON 导入 chart.js 的数据和标签
- mips - 以下表达式在 MIPS 中是否正确
- leaflet - Ionic OpenStreetMap 与 Leaflet 的集成
- css - css关键帧动画图像循环
- android - 无法弄清楚如何将此字段保存到数据库中