下面的查询返回所有来自:ids列表的id项。但是表和输入列表的顺序不同。有没有办法添加类似ORDER BY :ids的伪代码?
@Query("SELECT * FROM item_table WHERE type = :type AND itemId IN (:ids)")
fun getPagingSource(type: EntityType, ids: List<String>): PagingSource<Int, ItemEntity>
SELECT *
FROM item_table
WHERE type = :type
AND ',' || :ids || ',' LIKE '%,' || itemId || ',%'
ORDER BY INSTR(',' || :ids || ',', ',' || itemId || ',');
1条答案
按热度按时间llmtgqce1#
一种方法是不将id作为要使用操作符
IN
检查的List传递,而是将它们作为逗号分隔的字符串传递,类似于'36,3,14'
,并在WHERE
子句中使用操作符LIKE
来过滤行。然后,在
ORDER BY
子句中使用字符串函数INSTR()
对行进行排序:参见简化的demo。