SQL排序

来源:互联网  责任编辑:小易  时间:2017/5/28 12:38:16
本网有用户碰到这样的问题:SQL排序,具体问题如下:

本帖最后由 tangwwip 于 2017-01-05 15:12:16 编辑

本网根据需求用户需求,为用户寻得以下其他网友提供的解决方法,方法仅供参考,具体如下:

=================1楼=====================

来个人看下咯

=================2楼=====================

想法把时间转为秒,再排序。。。

=================3楼=====================

两张表是什么样的?原始数据是什么样的?需要什么结果?你的语句时报错了,还是没错,查的结果不满意?

你说的不清不楚的,别人看了不知道从哪儿开始呀。

=================4楼=====================

好像没说清楚,这里再说下

表原本是这样的


我想让他根据MonitorValue排序,MonitorValue是运行时间


select monitor.MonitorType,ServerAddress,monitor.MonitorValue from monitor,equipment where monitor.EquipmentId=equipment.RecId and  monitor.MonitorType = 'SnmpUpTime' and monitor.MonitorStatus = 'good' order by convert(substring_index(substring_index(MonitorValue , ',' ,1), '=' , -1), DECIMAL(9, 2)) desc limit 10

上面sql的结果是这样的,可以看到并不是完全按照运行时间来排序的,想问下要怎么改正


=================5楼=====================

引用 3 楼 yuxiangaaaaa 的回复:
两张表是什么样的?原始数据是什么样的?需要什么结果?你的语句时报错了,还是没错,查的结果不满意?

你说的不清不楚的,别人看了不知道从哪儿开始呀。

额,我重新说下吧

=================6楼=====================

引用 2 楼 kahnyy5202015 的回复:
想法把时间转为秒,再排序。。。

在sql里转?

=================7楼=====================

用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

=================8楼=====================

引用 7 楼 yuxiangaaaaa 的回复:
用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

我在sql里面就要转换,然后排序啊

=================9楼=====================

引用 8 楼 tangwwip 的回复:
Quote: 引用 7 楼 yuxiangaaaaa 的回复:

用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

我在sql里面就要转换,然后排序啊


sql里也有replace方法的,跟JAVA里的用法一样

=================10楼=====================

引用 9 楼 yuxiangaaaaa 的回复:
Quote: 引用 8 楼 tangwwip 的回复:

Quote: 引用 7 楼 yuxiangaaaaa 的回复:

用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

我在sql里面就要转换,然后排序啊


sql里也有replace方法的,跟JAVA里的用法一样

select  replace(MonitorValue,'=','')  from monitor

=================11楼=====================

引用 10 楼 yuxiangaaaaa 的回复:
Quote: 引用 9 楼 yuxiangaaaaa 的回复:

Quote: 引用 8 楼 tangwwip 的回复:

Quote: 引用 7 楼 yuxiangaaaaa 的回复:

用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

我在sql里面就要转换,然后排序啊


sql里也有replace方法的,跟JAVA里的用法一样

select  replace(MonitorValue,'=','')  from monitor


还不是我要的效果

=================12楼=====================

该回复于2017-01-06 10:45:03被管理员删除

=================13楼=====================

引用 11 楼 tangwwip 的回复:
Quote: 引用 10 楼 yuxiangaaaaa 的回复:

Quote: 引用 9 楼 yuxiangaaaaa 的回复:

Quote: 引用 8 楼 tangwwip 的回复:

Quote: 引用 7 楼 yuxiangaaaaa 的回复:

用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

我在sql里面就要转换,然后排序啊


sql里也有replace方法的,跟JAVA里的用法一样

select  replace(MonitorValue,'=','')  from monitor


还不是我要的效果

把非数字的都替换掉就是你要的效果了,没有替换完

=================14楼=====================

引用 13 楼 yuxiangaaaaa 的回复:
Quote: 引用 11 楼 tangwwip 的回复:

Quote: 引用 10 楼 yuxiangaaaaa 的回复:

Quote: 引用 9 楼 yuxiangaaaaa 的回复:

Quote: 引用 8 楼 tangwwip 的回复:

Quote: 引用 7 楼 yuxiangaaaaa 的回复:

用replace(str,'a','b');  把UPTIME =  days  :  都替换成空串,就剩下数字了,可以排序

我在sql里面就要转换,然后排序啊


sql里也有replace方法的,跟JAVA里的用法一样

select  replace(MonitorValue,'=','')  from monitor


还不是我要的效果

把非数字的都替换掉就是你要的效果了,没有替换完

UPTIME =   和“:”都替换掉

=================15楼=====================

sql不好写,MonitorValue并不是一个单纯的时间格式,是一个字符串,建议直接查询出来了,在代码里面写一个排序要好的多

=================16楼=====================

排序行是一个字符串,而且看格式应该是插入前计算出来的,你要的应该是插入的日期+时间,当前时间坚强days前面的数字,再加上后面的时间,要不没法排序

=================17楼=====================

已经解决了,谢谢大家了

如果您还有更好的解决方法,请在最下面评论中留下您的解决方法


  • 本文相关:
  • 站长必读,如何真正写好一篇原创文章
  • 互联网之路细嗅蔷薇 资深站长分享掘金之道
  • 企业站的站长的工作重心究竟有哪些
  • 浅析:行业门户网站的一些盈利模式
  • 3000IP的企业网站每天订单不到30个的苦恼
  • 网站想内外兼修?先学习提高网站可用性的6大原则
  • 浅谈网页设计中的简约之美
  • 网页改版实战:日本设计师如何彻底优化旅游网站?
  • 网页改版实战!日本设计师如何彻底优化招聘网站?
  • 2015年值得关注的21个网页设计趋势
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2015 www.zgxue.com All Rights Reserved