Ecto可以将列表转换为PostgreSQL查询中的整数数组吗?

时间:2019-04-12 20:24:56

标签: postgresql elixir ecto

使用PostgreSQL和Ecto,我试图按ID的指定顺序选择行列表。

psql中,此查询再次以完全相同的顺序获取ID为4、2、1和4的项目。

SELECT items.id, items.name
FROM items
-- unnest expands array values into rows
INNER JOIN unnest(ARRAY[4,2,1,4]) AS item_id
ON items.id = item_id

例如:

 id |     name
----+---------------
  4 | Toast Mitten
  2 | Pickle Juicer
  1 | Horse Paint
  4 | Toast Mitten

如何将其转换为Ecto查询?

1 个答案:

答案 0 :(得分:0)

使用连接片段

  defp specified_sort(query, ordered_ids) do
    from q in query,
      join: i in fragment("unnest(?::int[])", ^ordered_ids),
      on: q.id == i
  end