我想根据他们在数组中的 id 顺序在数据库中列出我的产品
我的数组
'{3,2,1}'::int[]
例如
SELECT id FROM product WHERE id = ANY ('{3,2,1}'::int[]);
此查询获取按产品 id 排序的产品
|id|
|1 |
|2 |
|3 |
但我想按数组 id 的索引列出我的产品。像这样 :
|id|
|3 |
|2 |
|1 |
是否有可能做到这一点 ?我能怎么做 ?
最佳答案
您可以使用 array_position()
:
ORDER BY array_position('{3,2,1}'::int[], id)
如果您不想重复数组两次:
select p.id
from product p join
(values ('{3,2,1}'::int[])) v(ar)
on p.id = any(v.ar)
order by array_position(v.ar, p.id);
关于sql - Postgresql 11 - 按整数数组索引排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59600753/