我有一张货物表:
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
我按标题排序错误
答案 0 :(得分:0)
执行此操作的一种方法是在排序时使用CASE
表达式,将记录块的成本置于底部。然后,在每个块内(零成本或非零成本),记录可以按标题按字母顺序排序。
SELECT cost, title
FROM public.goods
ORDER BY CASE WHEN cost = 0 THEN 1 ELSE 0 END,
title