使用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查询?
答案 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