(抱歉我的英语不好)
我有一组用户 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/