sql - Postgresql 11 - 按整数数组索引排序

标签 sql arrays postgresql sql-order-by postgresql-11

我想根据他们在数组中的 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/

相关文章:

sql - 如何过滤 Django 模型以仅包含出现在子表(带有外键)中的模型?

mysql - 如果我想在not in子句中查询同一张表两次,我可以使用同一个表别名吗?

MySQL选择用户存在的表

php - 从 php 中的数组构造 javascript

Javascript reduce 函数不适用于此对象

postgresql - 使用 ST_DWithin 查询 PostgreSQL 表中 400 英里范围内的几何点对

postgresql - 使用 SELECT NOT EXISTS 在 INSERT 上出错重复键

SQL 查询以查找具有至少一个非空值的列

java - 如何将日期对象的长值转换为日期

c - 如果满足条件,则递减数组并打印值