mysql order by 中文排序
在查询语句的 order by 部分使用 CONVERT 函数
在MySQL数据库中使用UTF-8的编码进行排序会出现不按照中文拼音的顺序排序,UTF8 默认校对集是 utf8_general_ci ,它不是按照中文来的,convert()这个函数可以实现临时编码,需要强制让MySQL按中文来排序。
SELECT * FROM 表名 order by CONVERT (字段 USING gbk) COLLATE gbk_chinese_ci ASC
根据子查询排序后根据中文首字母排序(mysql 5.7 需添加 limit(999999999) ,否则子查询无效)。
例:SELECT * FROM ( SELECT * FROM 表名` WHERE 条件 ORDER BY 字段 ASC limit(999999999) ) a
ORDER BY CONVERT (字段 USING gbk) COLLATE gbk_chinese_ci ASC
先排序后分组(mysql 5.7需设置 mysqld.cnf
(sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION) )
SELECT * FROM ( SELECT * FROM `表名` WHERE 条件 ORDER BY 字段 desc ) a GROUP BY 字段