繁体   English   中英

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

[英]How to sort query result by argument of list order?

下面的查询返回: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>

一种方法是不将 id 作为 List 传递给运算符IN检查,而是将它们作为逗号分隔的字符串传递,例如'36,3,14'并在WHERE子句中使用运算符LIKE来过滤行。

然后,在ORDER BY子句中使用字符串 function INSTR()对行进行排序:

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

查看简化的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM