问题是这样的,当我们按由大到小的顺序排序一组数字的时候,它应该如此:

  1. 9800
  2. 8000
  3. 900

但如果是这些数字是以String类型存储的话,直接排序的结果会是这样:

  1. 9800
  2. 900
  3. 8000

当然多数情况下我们会把数字存储为数字型,就可避免这一问题。但还是有一些情形,数字被存储为String。

比如wordpress的postmetas表,它的meta_value已经固定了就是String。当我们需要把meta_value按数字大小排序的时候,直接写order by meta_value就不能达到我们所需要的目的。

SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY meta_value DESC;
得到的结果:

  1. 9800
  2. 900
  3. 8000

解决的方法是,在排序语句里把meta_value转成数字再排序,写作-meta_value

SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY -meta_value ASC;
得到的结果:

  1. 9800
  2. 8000
  3. 900

此时采用的是按meta_value的负值排序,所以如需得到由大到小的效果,需要使用ASC而非DESC。当然也可以直接用--meta_value DESC

SELECT meta_value FROM postmeta WHERE meta_key="count" ORDER BY --meta_value DESC;
得到的结果一样是:

    1. 9800
    2. 8000
    3. 900

Mysql按数字大小排序String字段的更多相关文章

  1. 将一个整数数组先按照因子数量排序,再按照数字大小排序,输出第k个数

    同小米OJ比赛题:现在有 n 个数,需要用因子个数的多少进行排序,因子个数多的排在后面,因子个数少的排在前面,如果因子个数相同那么就比较这个数的大小,数大的放在后面,数小的放在前面.现在让你说出排序之 ...

  2. 如何让SQLServer的 itemNum 字段 按照数字大小顺序排序

    我的 itemNum 从1到20,可是超过了SQLServer的默认排序这样的1101112...19234567如何才能让排序成为这样1234567891011.. . 解决办法:因为 itemNu ...

  3. 如何在mysql中实现自然排序

    背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...

  4. MySQL数据库中实现对中文字段按照首字字母排序

    转载自网络! 1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决, ...

  5. Skill 返回一个数字list的大小排序信息

    https://www.cnblogs.com/yeungchie/ code procedure(ycSortList(numlist) prog((size sort) foreach(main ...

  6. 在mysql数据库中关于日期时间字段的处理

    在mysql数据库中关于日期时间字段的处理 在开发中,日期时间字段一般有如下几种设计 假设要获取2013-08-15日到2013-08-16日之间的记录 1. 直接使用日期时间类字段 相关sql语句如 ...

  7. linux 文件&文件夹大小排序

    按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...

  8. 【Offer】[53-1] 【数字在排序数组中出现的次数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出 ...

  9. mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it"

    mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it" 现 ...

随机推荐

  1. OpenGL ES 3.0之Texturing纹理详解(一)

    本文流程 1.Texturing基础 2.装载Texturing和mipmapping 3.纹理过滤和包装 4.Texture level-of-detail, swizzles, and depth ...

  2. Redis内存淘汰机制

    转自:https://my.oschina.net/andylucc/blog/741965 摘要 Redis是一款优秀的.开源的内存数据库,我在阅读Redis源码实现的过程中,时时刻刻能感受到Red ...

  3. 从头认识java-15.7 Map(7)-TreeMap与LinkedHashMap

    这一章节我们来讨论一下Map两个比較经常使用的实现:TreeMap与LinkedHashMap. 1.TreeMap 特性:依照key来排序 package com.ray.ch14; import ...

  4. SpringBoot添加对Mybatis分页插件PageHelper的支持

    1.修改maven配置文件pom.xml,添加对pageHelper的支持: <!--pagehelper--> <dependency> <groupId>com ...

  5. linux2.6.30.4内核移植(1)

    内核源码:linux2.6.30.4 交叉编译工具:3.4.5 移植linux内核至:TQ2440 1.进入内核顶层目录,修改顶层Makefile,大概在193和194行,将ARCH和CROSS_CO ...

  6. WritePrivateProfileString GetPrivateProfileString 读取写 配置文件

    Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfi ...

  7. MySQL登陆小问题

    root用户创建用户 CREATE USER gechong IDENTIFIED BY 'gechong'; 登录数据库时提示错误: C:\Users\gechong>mysql -u gec ...

  8. 如何查看页面是否开启gzip压缩

    F12 选择Network 表头右键: 如果开启了gzip则显示gzip,没有则是空. 上图是百度首页,显示已经进行gzip压缩.

  9. Laravel返回不重复的某个字段信息列表

    ->groupBy('brand_id') ->pluck('brand_id');

  10. CentOS7 vsftp使用ftp客户端登录时不同的用户进入到不同的文件夹方法

    anonymous_enable=NO local_enable=YES write_enable=YES local_umask=777 #anon_upload_enable=YES #anon_ ...