mysql选择不同的字母,包括扩展拉丁字符

mysql选择不同的字母,包括扩展拉丁字符,mysql,sql,Mysql,Sql,原始问题: 表结构: CREATE TABLE `texts` ( `letter` VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `text` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, INDEX (`letter` ASC), INDEX (`text` ASC) ) ENGINE InnoDB CHARA

原始问题:

表结构:

CREATE TABLE `texts` (
  `letter` VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `text` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  INDEX (`letter` ASC),
  INDEX (`text` ASC)
)
ENGINE InnoDB
CHARACTER SET utf8
COLLATE utf8_general_ci;
样本数据:

INSERT INTO `texts`
(`letter`, `text`)
VALUES
('a', 'Apple'),
('ā', 'Ābols'),
('b', 'Bull'),
('c', 'Cell'),
('č', 'Čakste');
我正在执行的查询:

SELECT DISTINCT `letter` FROM `texts`;
预期成果:

`letter`
a
ā
b
c
č
实际结果:

`letter`
a
b
c
我已经尝试了许多utf8排序规则utf8_[bin | general_ci | unicode_ci], utf8mb4[bin | general | unicode | ci]等,它们都不起作用。如何 修好这个

编辑澄清:我想要的不仅仅是得到所有的信件 输出,但也要按照我在 后果utf8_bin获取所有字母,但它们是按顺序排列的 错误的方式-扩展的拉丁字符只跟在所有基本字符之后 拉丁字符示例:a、b、c、ā、č。还有,我要的实际桌子 每个字母有许多文本,所以分组是必须的

编辑2:以下是来自实时站点的完整表格数据- 执行该SQL并在此之后运行以下查询:

SELECT DISTINCT BINARY `letter` FROM `texts` ORDER BY `letter` ASC
产生几乎完美的结果,但有一个例外:字母“ū”在“u”之前,这至少可以说很奇怪,因为所有其他扩展拉丁字母都出现在基本拉丁版本之后。如何解决最后一个问题?

检查二进制类型


检查

你是否尝试过utf8_bin?@juergend-添加了一个编辑来澄清一件事。好奇地想知道结果是什么:从文本中选择字母@ak0053792-如果所有文本都以一个唯一的字母开头,那么这对我来说是可行的,但是在实际的表格中,每个字母最多有100个不同的文本,所以我需要对它们进行分组。这非常有效,谢谢!phpMyAdmin显示扩展的拉丁字母,如“c481”而不是“ā”,但是在导出结果集时,它显示得很好。啊,不过有一件事。我在字母列上有索引,默认情况下它对字母进行正确排序,但是如果我在查询中添加字母顺序ASC,排序就会出错,扩展的拉丁字符会再次跟在基本拉丁字符后面。为什么呢?这里有一个例子来说明我的意思:检查这个链接,没有任何问题,因为有,小提琴在“a”之前输出“ā”,在“u”之前输出“ū”。
SELECT DISTINCT BINARY `letter` FROM `texts`