06_MySQL查询时报错(utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)

在MySQL中做嵌套查询的时候经常遇到错误1267,这就是因为查询出的数据和做筛选的列的字符集编码不同造成的!

SELECT  * FROM t_access 
WHERE passport_id = 
    (
    SELECT passport_id FROM allin.t_member 
    WHERE id="2e5a38a1-341a-48a6-bd60-01fd7ebf0690"
    );

错误代码: 1267
Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

utf8mb4_unicode_ci和utf8mb4_general_ci列不能混合查询!!!!这个时候我们就要把字符集改为相同的才能进行查询!(不过我不建议去改表的结构,一般表结构是不去做更改的)

查看表字符集结构:
语法:show table status from 库名 like  表名
SHOW TABLE STATUS FROM allin LIKE 't_member';
查看表中所有列的字符集
语法:show full columns from 表名;
SHOW FULL COLUMNS FROM allin.t_member;

解决方法:

我们可以在查询的时候指定等号一边的字符集编码
格式:WHERE 列名 COLLATE utf8mb4_unicode_ci = 嵌套语句
或者:WHERE 列名 = 嵌套语句 COLLATE utf8mb4_unicode_ci 达到让两边的字符集相等!

SELECT  * FROM t_access 
WHERE passport_id  COLLATE utf8mb4_unicode_ci = 
    (
    SELECT passport_id  FROM allin.t_member 
    WHERE id="2e5a38a1-341a-48a6-bd60-01fd7ebf0690"
    );

所以一般在创建表的时候就需要考虑设置好表的字符集

CREATE TABLE student (
Id INT(10) PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
NAME VARCHAR(20) NOT NULL COMMENT  '姓名',
Sex VARCHAR(4) COMMENT  '性别',
Birth YEAR COMMENT  '出生年份',
Department VARCHAR(20) NOT NULL COMMENT  '院系',
Address VARCHAR(50) COMMENT '家庭住址'
)ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_unicode_ci; # 指定字符集
# 或者 ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC

推荐阅读更多精彩内容

  • MySQL逻辑架构 下面是一幅MySQL各组件之间如何协同工作的架构图,有助于我们深入理解MySQL服务器。 如图...
    骑小猪看流星阅读 4,336评论 2 135
  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的。 2.排...
    阿休阅读 4,288评论 0 37
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,317评论 5 116
  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的 2.排他...
    ZyBlog阅读 19,249评论 3 178
  • 来这里是为了发泄自己的情绪,反正也没朋友看到,不要紧! 我现在好郁闷呀!对外又要装心情好好的样子,也不是装啦,只是...
    _基__阅读 72评论 0 0
  • 才郎运气舞毫狂, 红袖吟诗纸墨香。 琴瑟和鸣共举案, 原来帐里卧鸳鸯。
    3d9e9483439f阅读 119评论 0 0
  • 一到博卡拉,就去了大名鼎鼎的o2rk,环境非常好,露天屋顶用餐,能看到费瓦湖。我们按照店员推荐的点,结果被坑了,点...
    张吃吃阅读 327评论 3 3
  • 2007年,他们在高三补习班相遇,前后桌的他们喜欢一起探讨,偶尔也会闲聊,单调的生活里,很多同学都喜欢拿他们开涮,...
    暖心_85a8阅读 18评论 0 0
  • 在岁月过往的河流里,年少的青春落失了我多少的曾经。那些朦胧无知的经历,那些彷徨无措的抉择,都让我在历练中磨平心性。...
    明治阅读 152评论 0 3