postgresql - 如何按列排序但数组排在第一位

标签 postgresql sorting sql-order-by

(抱歉我的英语不好)

我有一组用户 ID,如下所示:

[5, 9, 3, 22, 16]

显然这些值是动态的。

现在,我需要SELECT所有用户,但具有上述 ID 的用户排在第一位。

到目前为止我尝试了什么?

这个查询给了我确切的答案:

SELECT * FROM users WHERE id IN (5, 9, 3, 22, 16)
UNION ALL
SELECT * FROM users WHERE id NOT IN (5, 9, 3, 22, 16);

但是有没有更好的办法呢?

附言:

我正在使用 PostgreSQL 10。

最佳答案

试试这个:

select *
from users
order by id not in (5, 9, 3, 22, 16), id

the documentation, 中所述ORDER BY 子句中使用的表达式

can be an arbitrary expression formed from input-column values.

特别是,您可以使用 bool 表达式,因为这种类型的值是可排序的。注意 false < true .

关于postgresql - 如何按列排序但数组排在第一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46736253/

相关文章:

Django 迁移说数据库后端不可用

angularjs - BackboneJS 和 AngularJS 排序稳定吗?

sql - 使用别名的 ORDER BY 中的 Postgres CASE

php - mysql/php 中的多级菜单

sql - 使用 PostgreSQL 在所有 JSON 字段中搜索

sql - 根据 Postgres 中匹配条件的行数有条件地插入

sorting - 使用 Groovy 对 XML 文件进行排序

sql - MYSQL Select语句Order By和Group By

sql - 使用 LIKE 查询数组的 Postgres

swift - 在 Swift 中对大量文本记录进行排序的最快排序技术是什么?