如何在Postgres上优先考虑具有特定条件的行?



我有这个表作为一个例子:

CREATE TABLE "public"."items" (
"name" text NOT NULL,
"type" text NOT NULL
)

初始值:

INSERT INTO "items" ("name", "type") VALUES
('apple',   'fruit'),
('banana',  'fruit'),
('chair',   'furniture'),
('table',   'furniture'),
('grape',   'fruit'),
('cabbage', 'vegetable'),
('beef',    'meat'),
('water',   'drinks'),
('lamp',    'furniture');

如何使用语句查询该表中的行这样我就能先得到fruit类型的行?

鉴于:

  • 有很多types(可能有成千上万个不同的types)
  • 我不关心结果的顺序,除了我想优先获得fruit类型第一

例如,我想从这个表中查询5行,结果将是'apple', 'banana', 'grape', 'cabbage' and 'beef'

可以使用布尔表达式作为第一个ORDER BY表达式:


SELECT * FROM items
ORDER BY (type='fruit') DESC, name
;

相关内容

  • 没有找到相关文章

最新更新