Postgresql自定义排序

p_m*_*mcp 5 sql postgresql

我想按列排序,我希望数字为ASC,但最后2行应始终为0然后为1(如果它们存在)

例如:

  • 8
  • 6
  • 10
  • 0
  • 2
  • 1

  • 2
  • 6
  • 8
  • 10
  • 0
  • 1

这怎么可能?

rua*_*akh 7

我认为,最明显的是订购通过

CASE WHEN column_name = 0
     THEN 0
     WHEN column_name = 1
     THEN 1
     ELSE -1
 END
Run Code Online (Sandbox Code Playgroud)

(这使所有的值除了01之前0,和0之前1)column_name(使得非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
;
Run Code Online (Sandbox Code Playgroud)