在postgres中选择时保留顺序

xxhby3vn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(359)

这个问题在这里已经有答案了

postgresql order by values in()子句(4个答案)
按in子句顺序查询数据(1个答案)
按输入值列表排序(17个答案)
11个月前关门了。
在psql中(至少在v9中),如果我这样做

select id from users where id in (2, 1, 1);

select id from users where id in (1, 2);

它们都以相同的顺序返回结果(并消除重复数据),如下所示: 1, 2 . 我怎么回去 2, 1, 1 而是在第一个查询中?

siotufzp

siotufzp1#

你不能;顺序将取决于执行计划、表的物理顺序和其他内容。
可以使用数组和显式 ORDER BY :

SELECT u.id
FROM users AS u
   JOIN unnest(ARRAY[2,2,1]) WITH ORDINALITY AS arr(elem, ord)
      ON u.id = arr.elem
ORDER BY arr.ord;

相关问题