排序目标是,英文就按首字母的 a,b,c 排,中文则按汉字的首字母排。最简单的排序方法只需要一条 SQL 语句就可以完成:01   mysql> select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using gbk) collate gbk_chinese_ci;02   +---+---+ 03   | tag   | COUNT(ta...    
mysql 如何中文英文混合排序
    排序目标是,英文就按首字母的 a,b,c 排,中文则按汉字的首字母排。
最简单的排序方法只需要一条 SQL 语句就可以完成:
01    mysql> select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using gbk) collate gbk_chinese_ci;    
02    +-----------------+-----------------+    
03    | tag           | COUNT(tag) |    
04    +-----------------+-----------------+    
05    | .Net            |               3 |    
06    | 10000小时       |               1 |    
07    | Amazon          |               9 |    
08    | android         |              57 |    
09    | C语言           |               1 |    
10    | Dennis Ritchie  |               2 |    
11    | Go语言          |               5 |    
12    | IT见解          |             146 |    
13    | JavaScript      |               4 |    
14    | John McCarthy   |               1 |    
15    | JQuery          |               7 |    
16    | Zynga           |               1 |    
17    | 阿里巴巴        |              28 |    
18    | 贝尔实验室      |               1 |    
19    | 互联网          |              24 |    
20    | 简明现代魔法    |               1 |    
21    | 淘宝网          |               2 |    
22    | 信息图          |               1 |    
23    | 余额宝          |              11 |    
24    | 支付宝          |              14 |    
25    | 植物大战僵尸    |               4 |    
26    | 自媒体          |               3 |    
27    +-----------------+-----------------+    
上面是按 gbk 字符集排序的,那么如果按 utf8 又如何呢?
view sourceprint?
01    mysql> select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using utf8) collate utf8_unicode_ci;    
02    +-----------------+-----------------+    
03    | tag           | COUNT(tag) |    
04    +-----------------+-----------------+    
05    | .Net            |               3 |    
06    | 10000小时       |               1 |    
07    | 12306           |               1 |    
08    | C语言           |               1 |    
09    | IT见解          |             146 |    
10    | Quora           |               4 |    
11    | Twitch          |               1 |    
12    | Twitter         |              19 |    
13    | Zynga           |               1 |    
14    | 三星            |               3 |    
15    | 专利            |               1 |    
16    | 余额宝          |              11 |    
17    | 开曼群岛        |               1 |    
18    | 意志力          |               1 |    
19    | 植物大战僵尸    |               4 |    
20    | 注意力经济      |               1 |    
21    | 简明现代魔法    |               1 |    
22    | 诺基亚          |              12 |    
23    | 诺贝尔奖        |               1 |    
24    | 豆瓣            |               3 |    
25    | 贝佐斯          |               1 |    
26    | 贝尔实验室      |               1 |    
27    | 轻博客          |               3 |    
28    | 运营            |               1 |    
29    | 量子计算机      |               1 |    
30    | 黑莓            |               1 |    
31    +-----------------+-----------------+    
PS:ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做一样的。
数字和引文排序是没问题,但为什么 H黑莓 会比 L量子计算机 靠后呢?这个在后面的章节会慢慢道来。2018-09-11