首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询技巧

SQL查询技巧
EN

Stack Overflow用户
提问于 2010-06-09 06:19:44
回答 4查看 147关注 0票数 3

我需要做的是

代码语言:javascript
复制
select * from xxx where name in (a,b,c...);

但我希望结果集的顺序为(a,b,c...)。这个是可能的吗?

EN

回答 4

Stack Overflow用户

发布于 2010-06-09 06:38:19

我找到了这个问题,看起来和你原来的问题很像:Ordering by the order of values in a SQL IN() clause

票数 3
EN

Stack Overflow用户

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2010-06-09 06:46:19

执行此操作的方法将是特定于DB的。

在Oracle中,您可以执行以下操作:

代码语言:javascript
复制
SELECT * FROM xxx 
where name in (a,b,c...)
ORDER BY DECODE(name,a,1,b,2,c,3);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3001735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档