V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
newworld
V2EX  ›  MySQL

MySQL order by 排序问题,是 bug 还是我太年轻

  •  1
     
  •   newworld · 2017-03-28 11:25:39 +08:00 · 2839 次点击
    这是一个创建于 2827 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬看过来,小弟请教,MySQL 学艺不精...特地来请教各位大佬,望不吝赐教啊... 在使用 MySQL 排序的时候,

    我想把 考号(字段 kh) 里面从左数第三个(包含第三个)取两个数为 11 的所有结果的 分数(字段 fs)进行 降序排列,可是我用order by出现这样的结果:
    前面的有比较小的值(越小不应该在最后么),后面才是按照降序排列的(数据有几千条)...很尴尬, 同样,我如果用升序排列,则前面的是按照升序的排序的,可是最后的几行就不是的...最后的几行有比较小的分数(不应该是越到最后越是最大的分数么),特么真是太尴尬...

    MySQL 代码如下:

    SELECT kh, xm, fs FROM score WHERE SUBSTRING(kh, 3, 2) = '11' ORDER BY fs DESC


    出现类似如下图的结果(这是使用降序的时候),请问该如何写 MySQL 语句?
    图

    第 1 条附言  ·  2017-03-28 15:31:12 +08:00
    顺利结贴 谢谢大家
    newworld
        1
    newworld  
    OP
       2017-03-28 14:12:34 +08:00
    哪位知道的,赐教啊 //
    binjjam
        2
    binjjam  
       2017-03-28 14:24:59 +08:00
    把 fs 的字段属性改成 整形 相关的。
    binjjam
        3
    binjjam  
       2017-03-28 14:28:09 +08:00   ❤️ 1
    @binjjam 或者 ORDER BY abs(fs) desc
    newworld
        4
    newworld  
    OP
       2017-03-28 14:56:17 +08:00
    @binjjam #3 感谢 思密达..我发现我的 FS 字段是 varchar 的 我改成 int 整形在排序也对了,你说的使用 ORDER BY abs(fs) desc 也可以..我不知道 ABS(X)这个函数 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5419 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:37 · PVG 15:37 · LAX 23:37 · JFK 02:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.