我正在MySQL数据库的CHAR列中存储单个emojis。列的编码是utf8mb4
当我运行这个聚合查询时,MySQL不会按emoji字符分组。而是返回一行,其中包含一个emoji和数据库中所有行的计数。
SELECT emoji, count(emoji) FROM emoji_counts GROUP BY emoji
这是我的表定义:

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似乎也起作用。

关于mysql - MySQL在表情符号上无法正确地按GROUP BY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34245143/

10-11 02:59