Postgresql:为项目列表排序Null + true和false

时间:2017-06-29 12:43:43

标签: postgresql sorting

我需要对下表进行排序:

id  accepted  priority

156    NULL        3
157    t           6
158    t           2
159    f           5
160    f           3

以这样的方式首先排序是基于“已接受”列,然后是基于优先级。 我能够在某种程度上做到:

ORDER BY accepted DESC , priority DESC

但是我想要以这样一种方式显示列表,即接受为NULL的行伴随着被接受为真的行,然后子排序将基于优先级。

因此,我需要的最终表是:

id  accepted  priority

157    t           6
156    NULL        3    
158    t           2
159    f           5
160    f           3

1 个答案:

答案 0 :(得分:2)

您可以使用coalesce使其按顺序将NULL替换为true。这不会影响select中返回的数据。

select * from table
order by coalesce(accepted,true) desc, priority desc