Sal*_*lil 3 postgresql ruby-on-rails sql-order-by
需要一个postgresql查询,它在非null值的末尾返回null值,而不管Ascending/Descending Order.
例如: - 我有一栏说buy_price的值为1,5,3,0,null,null
然后ORDER BY purchase_price ASC它应该返回
0
1
3
5
null
null
Run Code Online (Sandbox Code Playgroud)
并且ORDER BY purchase_price DESC它应该返回
5
3
1
0
null
null
Run Code Online (Sandbox Code Playgroud)
我需要概括的解决方案,我可以能够申请其中'boolean','float','string','integer','date'数据类型
order by支持nulls first/last.默认asc获取nulls last并desc获取nulls first.您可以为每列重写它们:
order by col1 desc nulls last, col2 desc nulls first, etc
Run Code Online (Sandbox Code Playgroud)
关于此的一个额外注释:根本原因是它们被置于btree索引末尾的空值.在PostgreSQL 9.0中,order by col desc nulls last优化了将索引扫描分成两部分(反向扫描非空行,后跟空行).添加它的原始版本不是这种情况(如果内存服务,则为8.4); 后者继续对整个表进行seq扫描,然后进行快速排序.旧版本根本不支持该功能.因此,除了最新版本的PostgreSQL之外,要小心使用它.
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |