Может ли Ecto привести список к целочисленному массиву в запросе PostgreSQL? - PullRequest
0 голосов
/ 12 апреля 2019

Используя PostgreSQL и Ecto, я пытаюсь выбрать список строк по id в указанном порядке.

В psql этот запрос снова получает элементы с идентификаторами 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 голосов
/ 12 апреля 2019

Использование фрагмента соединения

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