美文网首页
MySql 排序问题

MySql 排序问题

作者: 秦舒话 | 来源:发表于2018-06-30 18:13 被阅读0次

单个字段排序

-- 正序排序
select * from table order by cloumn (asc)
-- 倒序排序
select * from table order by cloumn desc

注意:默认是正序排列,所以asc可忽略

两个及以上字段排序

-- 都按照正序排序
select * from table order by cloumn1 (asc), cloumn2 (asc) ... 
-- 都按照倒序排序
select * from table order by cloumn1 desc, cloumn2 desc ...
-- 倒序和正序混合排序
select * from table order by cloumn1 (asc), cloumn2 desc ...

中文排序

由于数据库编码通常都是UTF-8格式,数据库的排序方式其实是对字段的十六进制字符串进行排序的,如果我们按照普通排序方式直接对中文字段排序,那我们得到数据排序方式一定不是按照中文拼音排序的,我们看下面这个sql语句

mysql> select countryname, hex(countryname) from country order by countryname asc
+-----------+------------------+
|   中国    |   E4B8ADE59BBD   |
|   法国    |   E6B395E59BBD   |   
|   美国    |   E7BE8EE59BBD   |
|   英国    |   E88BB1E59BBD   |
+-----------+------------------+

从查询结果看,是对countryname转换十六进制字符串进行正序排序的,而不是对countryname进行正序排序的。如何解决对中文字段的排序的问题呢?其实可以在查询的时候,通过convert函数,把查询出来的数据使用的字符集gbk编码,然后对convert后的中文进行排序即可

-- 正序排序
select * from country order by convert(countryname, using gbk) (asc)
-- 倒序排序
select * from country order by convert(countryname, using gbk) desc

相关文章

  • MySQL中怎么对varchar类型排序问题

    MySQL中怎么对varchar类型排序问题 在mysql默认order by 只对数字与日期类型可以排序,但对于...

  • MySql 排序问题

    单个字段排序 注意:默认是正序排列,所以asc可忽略 两个及以上字段排序 中文排序 由于数据库编码通常都是UTF-...

  • MySql 排序问题

    mysql 中排序使用 order by ,但是大部分情况下 直接字段排序,现在记录一下特殊排序方式 一 :正常排...

  • mysql文章汇集

    解决MySQL子查询排序失效的问题Mysql不支持FULL JOIN怎么办?

  • [Mysql教程系列] order by 多字段排序

    mysql单个字段降序排序: mysql单个字段升序排序: mysql多个字段排序: 多字字段排序只需要添加多个排...

  • mysql字段排序问题

    Author:杜七 Date: 2017.02.22 转载自:zkz专栏 Mysql按数字大小排序String字段...

  • MySQL中文排序问题

    起因 前两天做了一个需求,代理商列表是优先按照昵称排序的。但是客户发现,列表里并没有按照昵称排序,而是乱序的。但是...

  • mysql查询保持in的顺序

    目的:解决mysql的in语法查询顺序问题 mysql数据库总,使用in语句查询,查询结果默认会根据主键id排序。...

  • Mysql中数字排序问题

    手动转换类型:用下面的方法就可以了,使server_id+0之后再排序,问题解决了。select server_i...

  • mysql 分组内排序问题

    之前遇到过一个需求,要从读者借阅记录查询出每人借阅的第一本图书,刚开始想着根据读者分组之后,再按借阅时间排序就可以...

网友评论

      本文标题:MySql 排序问题

      本文链接:https://www.haomeiwen.com/subject/alatuftx.html