首页新闻找找看学习计划

Sqlserver中根据in的顺序排序

0
[已解决问题] 解决于 2018-04-28 10:18

select ptp.id from [dbo].[Pic_Temp_Process] ptp where ptp.id in
(5599, 1763317, 1130129, 505992, 174477, 23565, 1192438) order by
charindex(','+convert(varchar,ptp.id)+',',',5599, 1763317, 1130129, 505992, 174477, 23565, 1192438,')

我的语句

5599, 1763317, 1130129, 505992, 174477, 23565, 1192438

顺序应该是按这样子

但实际返回给我

请问in的排序sql怎样写,谢谢!

光明中的黑手的主页 光明中的黑手 | 初学一级 | 园豆:133
提问于:2018-04-28 00:25
< >
分享
最佳答案
0

看你截图应该是sql server 吧,用我下面截图这个试试,我以前用着是可以的。其实就是你上面的把convert(varchar,ptp.id)改成rtrim(cast(pip.id as varchar(10)))  

奖励园豆:5
默卿 | 老鸟四级 |园豆:4063 | 2018-04-28 09:26

我以前也这样用,也没发现什么问题,但就是这些id 我才发现这个并不对,按照你的写法是一样的,并没有按照其顺序排序

光明中的黑手 | 园豆:133 (初学一级) | 2018-04-28 09:48

如图

光明中的黑手 | 园豆:133 (初学一级) | 2018-04-28 09:51

charindex后面中不能包含空格,有空格就不行

光明中的黑手 | 园豆:133 (初学一级) | 2018-04-28 10:17
其他回答(1)
0

order by 后面直接根据id排序

小光 | 园豆:1825 (小虾三级) | 2018-04-28 09:22

它不是id 的顺序  你可以仔细看看,1192438 明显顺序不对,不知道它走的是什么顺序

支持(0) 反对(0) 光明中的黑手 | 园豆:133 (初学一级) | 2018-04-28 09:50

@光明中的黑手: 语法是对的,你在varchar后面带上大小,varchar(10)试试

支持(0) 反对(0) 小光 | 园豆:1825 (小虾三级) | 2018-04-28 10:07

@小光: 我都试过了,不知道为啥就是不行

支持(0) 反对(0) 光明中的黑手 | 园豆:133 (初学一级) | 2018-04-28 10:11

@小光: 我知道了,charindex后面中不能包含空格,有空格就不行

支持(0) 反对(0) 光明中的黑手 | 园豆:133 (初学一级) | 2018-04-28 10:17

@光明中的黑手: 嗯

支持(0) 反对(0) 小光 | 园豆:1825 (小虾三级) | 2018-04-28 10:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册