首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql server按值排序,而不是按字段名排序。

Sql server按值排序,而不是按字段名排序。
EN

Stack Overflow用户
提问于 2012-03-27 10:24:16
回答 2查看 764关注 0票数 2

假设我的表结构像

代码语言:javascript
复制
ID       OEReference
---      ------------
1         00000634B9
2         00000634B6
3         0005000053
4         0002855071
5         0000940148
6         0001414825
7         00000634B9

我想要他们的方式,我提供的OEReference,订单应该保持在输出。我的sql就像

代码语言:javascript
复制
Select * from mytable where OEReference in ('00000634B9','0001414825','00000634B6')

上述语句没有按照IN子句的顺序返回结果集。我知道用命令从句是不可能的

如何使用sql server中的简单sql语句执行此操作。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-27 10:28:13

您可以使用临时表作为筛选器。inner join将强制执行筛选器,您可以对identity列进行排序:

代码语言:javascript
复制
declare @filter table (id int identity, ref varchar(50))
insert @filter values ('00000634B9')
insert @filter values ('0001414825')
insert @filter values ('00000634B6')

select  *
from    YourTable yt
join    @filter filter
on      filter.ref = yt.OEReference
order by
        filter.id
票数 5
EN

Stack Overflow用户

发布于 2012-03-27 10:42:23

以下是我给你的解决方案:

代码语言:javascript
复制
SELECT [id], [OEReference]      

  FROM [Tbl]

  where [OEReference] in ('002', '001')

  order by case [OEReference]
      when '002' then 1
      when '001' then 2
      end

请注意:这会降低服务器的性能。这取决于表中有多少行。但是,您可以轻松地为OEReference添加索引。当然,您应该生成这样的查询动态。我的解决方案并不理想。也许你觉得它对你有用。

编码愉快!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9887686

复制
相关文章

相似问题

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