首页 新闻 会员 周边 捐助

sql查询问题,倒叙查出最大的数字

0
[已解决问题] 解决于 2018-03-28 08:52

有办法每次给我查出来的是最大的那条批次号吗?这个批次号倒叙只认1-9,最大是9,  10他就不认为大。大哥们想个办法。max(o.batchno) 我试过也最大是9。有没办法可以实现我的想法,存储的格式就是  日期-批次号这种

如梦一场的主页 如梦一场 | 菜鸟二级 | 园豆:234
提问于:2018-03-27 09:38
< >
分享
最佳答案
0

select * from data_syfr_tem o where  o.batchno like '20180326%' ORDER BY (RIGHT(o.batchno, LENGTH(o.batchno)-9)) desc;

这个语句的意思就是将batchno截取“-”后面的数字,然后再来排序,你试一试。

奖励园豆:5
Shendu.CC | 老鸟四级 |园豆:2138 | 2018-03-27 09:55

老哥排序还是老样子。

如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-27 10:07

@如梦一场: 你等着

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:10

@如梦一场: 更新之后:

select * from test o where  o.batchno like '20180326%' ORDER BY (CONVERT(INT,Right(o.batchno, Len(o.batchno)-9))) desc;

 还是老样子,我就去吃shi.

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:18

@Shendu.cc: column "int" does not exist

如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-27 10:23

@如梦一场: 你用的是什么数据库Mysql,还是Oracle还是SqlServer

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:27

@Shendu.cc: PostgreSQL  不好意思问题忘记说数据库了。。。

如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-27 10:28

@如梦一场: PostgreSQL 应该没有INT类型,你用Integer 或者numeric试试。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:31

@Shendu.cc: 老哥不行,他这提示的是列不存在,他好像把Integer  当成是列名了,而不是转换成int类型

如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-27 10:33

@如梦一场: 我知道了,你使用cast ( Right(o.batchno,Len(o.batchno)-9) as numeric ) 来转换类型。还好RostgreSql 支持Right,Length字符串函数。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:37

@Shendu.cc: 应该是length不是len,谢谢老哥

如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-27 10:41

@如梦一场: 不同的数据库,函数都不一样~

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:44

@Shendu.cc: 谢谢啦

如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-27 10:47

@如梦一场: 不客气!

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-27 10:48
其他回答(2)
0

这设计数据库的人投资了英特尔股票吧?

这么设计数据库很锻炼程序员的歪门邪道思维啊。

你可以这么来

Select * from data-_syfr o order by len(o.batchno) desc, o.batchno desc

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-03-27 09:53

select o.id as id ,o.uniscid as uniscid, o.regno as regno , o.entname as entname,o.batchno as batchno from data_syfr_tem o where o.batchno like '"+date+ "%' "
+ "order by (cast(right(o.batchno,length(o.batchno)-9) as int)) desc

 

 

这种是对我这个数据库正确的写法,谢谢你啦

支持(0) 反对(0) 如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-28 08:51
0

多重排序

用字符串截取函数取得左侧的日期,按升序排列,用字符串截取函数取得右侧的编号并把它转换为整型,按降序排列。

伪代码 order by 日期 asc , 编号 desc 

至于PostgreSQL 里 字符串函数和数据类型转换函数怎么用,你得自己查文档。

西漠以西 | 园豆:1675 (小虾三级) | 2018-03-27 11:06

谢谢你我解决啦

支持(0) 反对(0) 如梦一场 | 园豆:234 (菜鸟二级) | 2018-03-28 08:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册