Postgresql自定义排序

Postgresql自定义排序,sql,postgresql,Sql,Postgresql,我想按一列进行排序,其中我希望数字为ASC,但最后两行应始终为0,然后为1(如果存在) 例如: 八, 六, 十, 0 二, 一, 变成 二, 六, 八, 十, 0 一, 这怎么可能呢?我认为最清楚的办法是同时订购 (将除0和1之外的所有值置于0之前,将0置于1之前)并按列名(这样非0和非1值按顺序显示) 例如: SELECT column_name FROM table_name ORDER BY CASE WHEN column_name = 0

我想按一列进行排序,其中我希望数字为ASC,但最后两行应始终为0,然后为1(如果存在)

例如:

  • 八,
  • 六,
  • 十,
  • 0
  • 二,
  • 一,
变成

  • 二,
  • 六,
  • 八,
  • 十,
  • 0
  • 一,

这怎么可能呢?

我认为最清楚的办法是同时订购

(将除
0
1
之外的所有值置于
0
之前,将
0
置于
1
之前)并按
列名
(这样非
0
和非
1
值按顺序显示)

例如:

SELECT column_name
  FROM table_name
 ORDER
    BY CASE WHEN column_name = 0
            THEN 0
            WHEN column_name = 1
            THEN 1
            ELSE -1
        END,
       column_name
;
SELECT column_name
  FROM table_name
 ORDER
    BY CASE WHEN column_name = 0
            THEN 0
            WHEN column_name = 1
            THEN 1
            ELSE -1
        END,
       column_name
;
SELECT * 
FROM YOURTABLE
ORDER BY CASE YOURCOLUMN
         WHEN YOURCOLUMN=0 THEN 0
         WHEN YOURCOLUMN=1 THEN 1
         ELSE -99
         END;