我从会话中获得一个列表(初始列表),其中包含以下订单中的客户ID: -
[208700013, 30216118005, 30616118005, 10121005444, 206700013]
现在我将这些customerId作为一个集合使用“IN”查询传递给customer表,我在其中获取了stringI中的customerId列表以及其他值。
但是按照以下顺序检索customerIds:
10121005444
206700013
208700013
30216118005
30616118005
当我在视图中显示值时,这会产生问题。
如何获取初始列表中设置的与查询返回的列表顺序相同的顺序?
答案 0 :(得分:2)
如果你只有一个完整的结果集,最简单的方法是使用比较器在java中对它们进行排序。
如果必须在oracle中执行此操作,则可以使用如下语句:
select * // never do that in production
from someTable
where id in (10121005444, 206700013, 208700013, 30216118005, 30616118005)
order by decode(id, 10121005444, 1, 206700013, 2, 208700013, 3, 30216118005, 4, 30616118005, 5)
答案 1 :(得分:0)
您无法使用IN
子句指定订单。我认为你有两个选择:
IN
执行查询,并在收到后对结果集进行排序答案 2 :(得分:0)
您可以使用此查询 -
SELECT id FROM table
WHERE id in (10121005444, 206700013, 208700013, 30216118005, 30616118005)
ORDER BY FIND_IN_SET(id,
"10121005444, 206700013, 208700013, 30216118005, 30616118005");
第二个列表定义了您希望结果集的顺序