mysql根据字段的排序问题

qq_1223802380 2018-02-05 09:15:23
如题,我表中现在有两个字段,一个是代表年份的字段 nf 一个是代表编号的字段 bh ,数据库(mysql)是这样存储的:

oid nf bh
1 2017 8
2 2017 22
3 2018 111
4 2016 353
5 2018 46

我现在想要的排序就是先排nf,在排编号,排序后大概就是这样子的

oid nf bh
4 2016 353
1 2017 8
2 2017 22
5 2018 46
3 2018 111

试了好多办法都不行,求大神指教!谢谢谢谢~~
...全文
294 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_1223802380 2018-02-05
  • 打赏
  • 举报
回复
引用 7 楼 zjcxc 的回复:
order by nf ,cast(bh as signed)
OK!!十分感谢!!谢谢谢谢~
zjcxc 元老 2018-02-05
  • 打赏
  • 举报
回复
order by nf ,cast(bh as signed)
qq_1223802380 2018-02-05
  • 打赏
  • 举报
回复
引用 5 楼 roy_88 的回复:
把你的语句贴出来看看
select substr( ah, instr(ah,'(')+1, instr(ah,')')-2 ) as nf, case when ajlx='002' then replace( substr( ah, instr(ah,'更')+1, instr(ah,'号') ), '号', '' ) when ajlx='001' then replace( substr( ah, instr(ah,'备')+1, instr(ah,'号') ), '号', '' )end as bh, ah from table order by nf asc,bh asc; 上面的是sql,数据库有一个ah的字段,nf,bh是在ah这个字段截取的,一直弄不对,。。。
中国风 2018-02-05
  • 打赏
  • 举报
回复
把你的语句贴出来看看
qq_1223802380 2018-02-05
  • 打赏
  • 举报
回复
引用 3 楼 roy_88 的回复:
[quote=引用 2 楼 qq_38900493 的回复:] 这样获取的年份是正确的,但是bh不对,bh是按照第一个数字排序的,就是这样子的 oid nf bh 4 2016 353 2 2017 22 1 2017 8 3 2018 111 5 2018 46
用以下提定排序试试
select * from tb order by   nf asc ,bh asc
[/quote] 已经试过了,还是不行的,bh还是按照第一个数字进行排序的 oid nf bh 4 2016 353 2 2017 22 1 2017 8 3 2018 111 5 2018 46
中国风 2018-02-05
  • 打赏
  • 举报
回复
引用 2 楼 qq_38900493 的回复:
这样获取的年份是正确的,但是bh不对,bh是按照第一个数字排序的,就是这样子的 oid nf bh 4 2016 353 2 2017 22 1 2017 8 3 2018 111 5 2018 46
用以下提定排序试试
select * from tb order by   nf asc ,bh asc
qq_1223802380 2018-02-05
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
select * from tb order by nf ,bh
这样获取的年份是正确的,但是bh不对,bh是按照第一个数字排序的,就是这样子的 oid nf bh 4 2016 353 2 2017 22 1 2017 8 3 2018 111 5 2018 46
zjcxc 元老 2018-02-05
  • 打赏
  • 举报
回复
select * from tb order by nf ,bh

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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