sql - 在 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
首先获取具有类型的行?
鉴于:
- 有很多
type
s(可能有数千个不同type
的 s) - 我不在乎结果的顺序,除了我想优先获取
fruit
类型
例如,如果我想从该表中查询 5 行,结果将是'apple', 'banana', 'grape', 'cabbage' and 'beef'
.
解决方案
您可以使用布尔表达式作为第一个ORDER BY
表达式:
SELECT * FROM items
ORDER BY (type='fruit') DESC, name
;
推荐阅读
- html - 如何使用 css Grid 重叠项目?
- python - How to send a value to exec's running code
- node.js - 为什么在计算对象中的字母数量时,我需要在递增对象之前测试对象上的属性是否存在?
- python - 如何将值从提升的类传递到 Ui_MainWindow()
- django - 有没有办法使用表单在 Django 中的我的 html 元素中添加类?
- typescript - 来自枚举的 Typescript 类型推断抛出“类型实例化过深并且可能无限”。
- xtermjs - 如何在 xtermjs 上使用触摸事件(iPad)进行选择
- c# - 使用 string.Format 进行本地化
- python - 如何为 QTreeWidgetItem 添加彩色动画?
- javascript - 从标签python的onclick属性获取URL