Postgres排序表达式

时间:2016-07-26 08:30:38

标签: postgresql

我有一张货物表:

CREATE TABLE public.goods (
    "id" bigserial NOT NULL,
     title varchar(250) NOT NULL,
     cost numeric(10,2),
    PRIMARY KEY ("id")
);

现在我想按标题对此表进行排序,但是将所有商品的成本0放在列表的末尾。这可能吗? 如果我尝试使用:

ORDER BY
    cost DESC,
    title ASC

我按标题排序错误

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在排序时使用CASE表达式,将记录块的成本置于底部。然后,在每个块内(零成本或非零成本),记录可以按标题按字母顺序排序。

SELECT cost, title
FROM public.goods
ORDER BY CASE WHEN cost = 0 THEN 1 ELSE 0 END,
         title