mysql select where in 排序_按 Select Where In 的内容进行字段排序

Select Where In 的排序问题在SQL里怎么按 Select Where In 的内容进行字段排序?

假如SQL语句为:

Select * FROM table1 Where (ID IN

(3,5,1,4,2))

如果In后面的条件都是数字,那MSSQL排序应该为

Select * FROM table1 Where (ID IN (3,5,1,4,2))

orDER BY CHARINDEX(',' + CONVERT(nvarchar, ID) + ',', ',' +

CONVERT(nvarchar,

Replace('3,5,1,4,2', ' ','')) + ',')

改进方法,不去处理空格,直接改用空格判断.可以用来判断少数有空格的字符条件.

Select * FROM table1 Where (ID IN (3,5,1,4,2))

orDER BY PATINDEX('% ' + CONVERT(nvarchar(4000), ID) + ' %', ' ' +

CONVERT

(nvarchar(4000), Replace('3,5,1,4,2', ',',' , ')) + ' ')

其实还是在SQL外处理好条件字符串再进行查询和排序比较好.

对于MYSQL排序可能要改为(MYSQL不熟):

Select * FROM table1 Where (ID IN (3,5,1,4,2))

orDER BY FIND_IN_SET(ID, '3,5,1,4,2')

在查询分析器中执行:

select id from table1 where id in(3224,3225,3395,2810,3280,3281,3292)

结果确实(按ID又小到大排序了):

2810

3224

3225

3280

3281

3292

3395

请问如果能让id按我(3224,3225,3395,2810,3280,3281,3292)中的顺序显示了。

PS:我的SQL语句是通过hibernate调用的,所以不能用存储过程什么的

order by charindex(...) 是好方法:)

select id from table1 where id in(3224,3225,3395,2810,3280,3281,3292) order by

charindex( ', '+rtrim(id)+ ', ' , ', '+

'3224,3225,3395,2810,3280,3281,3292 '+ ', ')

我有个sql查询:

select * from table_name t

where t.id in

(

'235',

'dsafas',

'fsafsa',

'gdghdh',

'her',

'fw',

'fsafa'

)

查询出的结果是按照ASCLL编码排序的,请问有没有方法按照in列表的顺序列出查询结果,谢谢。

decode啊!反正就这么几个

这只是一个例子,有一万多条!

一万多条的话,不可能放到in列表,应该用表连接;在这一万多条的表上另外加一个排序字段,结果用ORDER BY排序。

大哥, 这1万多条不是表里的, 是客户需要查询的, 没什么规律可言. 没办法用表连接.

t.id 不是和那数据由连接关系吗?构造表啊

select * from table_name t

where t.id in

(

'235',

'dsafas',

'fsafsa',

'gdghdh',

'her',

'fw',

'fsafa'

)

order by decode

(

t.id,

'235',1,

'dsafas',2,

'fsafsa',3,

'gdghdh',4,

'her',5,

'fw',6,

'fsafa',7

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值