sqlite 如何按列表顺序的参数对查询结果进行排序?

7lrncoxx  于 2023-01-21  发布在  SQLite
关注(0)|答案(1)|浏览(385)

下面的查询返回所有来自: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>
llmtgqce

llmtgqce1#

一种方法是不将id作为要使用操作符IN检查的List传递,而是将它们作为逗号分隔的字符串传递,类似于'36,3,14',并在WHERE子句中使用操作符LIKE来过滤行。
然后,在ORDER BY子句中使用字符串函数INSTR()对行进行排序:

SELECT * 
FROM item_table 
WHERE type = :type
  AND ',' || :ids || ',' LIKE '%,' || itemId || ',%'
ORDER BY INSTR(',' || :ids || ',', ',' || itemId || ',');

参见简化的demo

相关问题