Postgresql Postgres子查询,按子查询排序
如果我有以下问题:Postgresql Postgres子查询,按子查询排序,postgresql,Postgresql,如果我有以下问题: select * from tbl where id in (10, 20, 9, 4); 返回的结果可能按以下顺序排列: 4. 9, 10, 二十 但是,如果您希望维护传递到初始查询中的列表的顺序,该怎么办?你将如何处理这个问题 最终,我在这里使用Django作为我的应用程序的ORM,但我希望首先调查在db级别什么是可行的 欢迎任何意见 然后,您可能想看看如何在ORDER BY语句中使用数组看看如何创建数组并使用它在函数中排序。很好 用例的可移植性不强,因为您必须提前知道
select * from tbl where id in (10, 20, 9, 4);
返回的结果可能按以下顺序排列:
4.
9,
10,
二十
但是,如果您希望维护传递到初始查询中的列表的顺序,该怎么办?你将如何处理这个问题
最终,我在这里使用Django作为我的应用程序的ORM,但我希望首先调查在db级别什么是可行的
欢迎任何意见 然后,您可能想看看如何在ORDER BY语句中使用数组看看如何创建数组并使用它在函数中排序。很好 用例的可移植性不强,因为您必须提前知道所有的值以及要排序的顺序。最干净的方法是使用数组作为值,并按数组中项的索引进行排序 不久前我已经把这篇文章发到博士后了
CREATE OR REPLACE FUNCTION idx(anyarray, anyelement)
RETURNS int AS
$$
SELECT i FROM (
SELECT generate_series(array_lower($1,1),array_upper($1,1))
) g(i)
WHERE $1[i] = $2
LIMIT 1;
$$ LANGUAGE sql IMMUTABLE;
挑选*
来自富
按idx排序(数组[‘大一’、‘大二’、‘大三’、‘大四’],foo.grade_level)