Elixir外部查询-保持输出顺序

Elixir外部查询-保持输出顺序,elixir,ecto,Elixir,Ecto,我有一个ID列表[“123”、“321”、“101”] 查询segments=Repo.all(来自段中的(s,其中:s.id in^id)) 匹配段的输出顺序与列表中的顺序不同。例如,如果这是一个Enum.map,则顺序将被保留。是否有一种方法可以做到这一点,只使用一个查询,而不必执行类似于Enum.each?以下是我尝试转换为EXTO(用于Postgres)的方法: def模块段do ... def by_id_顺序(查询,id)do 查询 |>连接(:inner,[s],o在片段中(“SE

我有一个ID列表
[“123”、“321”、“101”]

查询
segments=Repo.all(来自段中的(s,其中:s.id in^id))


匹配段的输出顺序与列表中的顺序不同。例如,如果这是一个
Enum.map
,则顺序将被保留。是否有一种方法可以做到这一点,只使用一个查询,而不必执行类似于
Enum.each

以下是我尝试转换为EXTO(用于Postgres)的方法:

def模块段do
...
def by_id_顺序(查询,id)do
查询
|>连接(:inner,[s],o在片段中(“SELECT*fromnest(?:int[]),序号为o(id,ordinal)”,^id),在:s.id==o.id上
|>订货人([s,o],asc:o.序号)
结束
结束

段
|>按顺序([123,321,101])的段id
|>回购协议

以下是我尝试转换成EXTO(对于Postgres):

def模块段do
...
def by_id_顺序(查询,id)do
查询
|>连接(:inner,[s],o在片段中(“SELECT*fromnest(?:int[]),序号为o(id,ordinal)”,^id),在:s.id==o.id上
|>订货人([s,o],asc:o.序号)
结束
结束

段
|>按顺序([123,321,101])的段id
|>回购协议
有关灵感,请参阅。有关灵感,请参阅。