多个 ORDER BY
Posted
技术标签:
【中文标题】多个 ORDER BY【英文标题】:Multiple ORDER BY 【发布时间】:2020-04-30 08:34:25 【问题描述】:我完全迷失在 OrderBy 子句中。
订购后我需要这个结果:ID: 8, 5, 2, 1, 4, 6, 7, 3
这些规则必须按此顺序应用:
top3 = 1 top2 = 1 top1 = 1 按 ASC 顺序,但顺序为“NULL”或 0 到行尾有没有可能做这个排序?
谢谢大家!
【问题讨论】:
到目前为止您尝试过什么,请向我们展示查询。 【参考方案1】:我会将您的要求翻译为:
order by
top3 desc,
top2 desc,
top1 desc,
nullif(`order`, 0) nulls last
最后一个标准通过升序 order
缩短,同时保持 null
s 和 0
值最后。
请注意,order
在所有 SQL 方言中都是保留字,因此不适合作为列名。
【讨论】:
【参考方案2】:很遗憾,mysql 不支持NULLS LAST
/NULLS FIRST
。但是,它很容易被合并到查询中:
order by top1 desc, top2 desc, top3 desc,
(ordercol is null or ordercol = 0) asc -- put these values last
【讨论】:
以上是关于多个 ORDER BY的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flask-SQLAlchemy 中执行多个“order_by”?
rank() over(partition by A order by B) MySQL里可以partition多个字段嘛