我正在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/