SQL排序的问题。。。

ppsniffer 2011-03-13 09:22:40

SELECT TOP 10 * FROM [book] where bookid in (1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856)


查询结果怎样根据()括号里面的顺序排序?

比如ID为1065003排第一,1067113第二这样。。
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppsniffer 2011-03-14
  • 打赏
  • 举报
回复
问题已经解决

SELECT TOP 10 * FROM [book] where bookid in (1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856)
order by charindex(','+cast(bookid as varchar)+',',',1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856,')

子夜__ 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 ppsniffer 的回复:]
SQL code

SELECT TOP 10 * FROM [book] where bookid in (1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856)



查询结果怎样根据()括号里面的顺序排序?

比……
[/Quote]
你是要先排序还是后排序。。

create table #b
(CC nvarchar(50))

select * from #b

insert into #b select '1065003'
union select '1065003'
union select '1067113'
union select '1039748'
union select '1067630'
union select '1066993'
union select '1061085'
union select '1060138'
union select '1058105'
union select '1063632'
union select '1056890'
union select '1064456'
union select '1066585'
union select '1062870'
union select '1055856'


--先查找后排序
SELECT TOP 10 * FROM [book] where bookid in (select * from #b) order by asc

--先排序后查找
SELECT * FROM [book] where bookid in (select TOP 10 * from #b order by asc)

duan_dream 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 michaelgong 的回复:]
SQL code

SELECT TOP 10 * FROM [book] where bookid in (1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856) order by asc


asc 升序 (默认)
……
[/Quote]
顶。。。。
lindping 2011-03-13
  • 打赏
  • 举报
回复
数据库不可能能按照你的输入参数去排列数据,也没有必要这么做,你把数据取出来以后在内存里做个排序就行了,比如 把参数放入List <int>,取其索引作为排序
list<int> list = new list<int>{ 1065003,1067113,...}
books = books.orderby(p=> list.IndexOf(p.booid));
michaelgong 2011-03-13
  • 打赏
  • 举报
回复

SELECT TOP 10 * FROM [book] where bookid in (1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856) order by asc

asc 升序 (默认)
desc 降序
PitTroll 2011-03-13
  • 打赏
  • 举报
回复
SELECT TOP 10 * FROM [book] where bookid in (1065003,1067113,1039748,1067630,1066993,1061085,1060138,1058105,1063632,1056890,1064456,1066585,1062870,1055856) order by bookid asc
rekym 2011-03-13
  • 打赏
  • 举报
回复
LZ是想要根据参数的输入顺序,查询出来的数据也是按个顺序的。。。

用3#的~~~~~~~~~
donglin0316 2011-03-13
  • 打赏
  • 举报
回复
搞明白了 你是想根据你自己排的编号查信息吧
misswangjinfeng 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lindping 的回复:]
数据库不可能能按照你的输入参数去排列数据,也没有必要这么做,你把数据取出来以后在内存里做个排序就行了,比如 把参数放入List <int>,取其索引作为排序
list<int> list = new list<int>{ 1065003,1067113,...}
books = books.orderby(p=> list.IndexOf(p.booid));
[/Quote]

LZ用这个吧
donglin0316 2011-03-13
  • 打赏
  • 举报
回复
都不清楚你是要升序还是降序呢

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧