簡體   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