MySQL 无法在表情符号上正确分组

MySQL won't properly GROUP BY on emojis

我将单个表情符号存储在 MySQL 数据库的 CHAR 列中。该列的编码是 utf8mb4.

当我运行这个聚合查询时,MySQL不会按表情符号字符分组。它取而代之的是 returns 带有单个表情符号的单行和数据库中所有行的计数。

SELECT emoji, count(emoji) FROM emoji_counts GROUP BY emoji

这是我的 table 定义:

CREATE TABLE `emoji_counts` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `emoji` char(1) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

是否有一些我必须考虑的特殊 Unicode 行为?

原来我需要在查询中指定扩展排序规则,即 utf8mb4_unicode_520_ci

这有效:

SELECT emoji, count(emoji) FROM emoji_counts group by emoji collate utf8mb4_unicode_520_ci;

编辑:该排序规则在某些服务器配置(包括 ClearDB 的)上不可用...utf8mb4_bin 似乎也有效。