Mysql:为视图设置排序规则不起作用

问题描述

我想将视图的排序规则设置为数据库。但该选项不可用。 即使我尝试设置除此之外的任何内容,也不会在列中反映出来,因为它们单独具有不同的排序规则。

代码

create or replace view my_view as
select * from table_a a
inner join table_b b
on a.id = b.fk_id
collate utf8mb4_unicode_ci

但是如果我查询

SHOW FULL COLUMNS FROM my_view

结果集包含整理为 utf8mb4_general_ci

谁能解释为什么会这样?我该如何纠正?

更多信息

SHOW VARIABLES LIKE "char%";
variable_name value
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem 二进制
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/MysqL/share/charsets/

解决方法

您的 collate utf8mb4_unicode_ci 仅影响加入条件。

如果您需要更改结果集排序规则,则必须使用单独的列列表而不是带有单独排序规则更改(CONVERT 函数)或为每个字符串类型列指定的星号。

DEMO