我需要做的是
select * from xxx where name in (a,b,c...);但我希望结果集的顺序为(a,b,c...)。这个是可能的吗?
发布于 2010-06-09 06:38:19
我找到了这个问题,看起来和你原来的问题很像:Ordering by the order of values in a SQL IN() clause
发布于 2010-06-09 06:26:06
啊-我明白了。您可以使用case语句做一些可怕的事情,然后按该语句排序。您可以有效地将另一个列添加到查询中,使其成为一个"order“,然后您可以"order by”
这很难看,但如果你控制查询,并且' in‘子句中的数字很低,它可以工作(相信'in’子句被限制为255个字符)
例如"IF name = a then 1 else if name = b then 2“
如果做不到这一点,最好使用类似的技术对客户端进行排序(假设是客户端首先将信息注入“in”子句)。
-Ace
发布于 2010-06-09 06:46:19
执行此操作的方法将是特定于DB的。
在Oracle中,您可以执行以下操作:
SELECT * FROM xxx
where name in (a,b,c...)
ORDER BY DECODE(name,a,1,b,2,c,3);https://stackoverflow.com/questions/3001735
复制相似问题