id 怎么不是按顺序?
-- 用户表 user1 CREATE TABLE user1 ( id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT KEY COMMENT '编号', username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名', email VARCHAR(50) NOT NULL DEFAULT '123456789@qq.com' COMMENT '邮箱', proName TINYINT NOT NULL COMMENT '省份' )engine=Innodb charset=utf8; INSERT user1(username,proName) values('a',1), ('b',1), ('c',1), ('d',2), ('e',3), ('f',3), ('g',1); select username,proName from user1; -- 省份表 pro create table pro ( id tinyint unsigned not null auto_increment key, proName varchar(10) not null unique )engine=innodb charset=utf8; insert pro(proName) values('北京'),('上海'),('深圳'); -- 查询user: id ,username ;pro: proName select u.id,u.username,p.proName from user1 as u join pro as p on u.id=p.id;
25
收起
正在回答
3回答
同学你好,这是因为受编码方式的影响,使用utf-8字符集排序时,汉字排序并不是按照字母顺序来排序的,所以就会出现同学所说的有按照顺序的排序。
我们如果修改一下字符编码,改为GBK就会按照汉字顺序来排序了,比如,老师写的小例子
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小班
2019-12-12 11:13:59
同学你好,
运行同学代码,id没有按照顺序是因为在pro表中的id的顺序是没有正常排序,例:
所以对应连接查询的结果也是如上所示的内容。对应我们可以发现pro表中的id没有按照顺序,解决办法,删除这个id主键,重新插入这个主键的字段。
ALTER TABLE `pro` DROP `id`; ALTER TABLE `pro` ADD `id` MEDIUMINT( 3 ) NOT NULL FIRST; ALTER TABLE `pro` MODIFY COLUMN `id` MEDIUMINT( 3 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
执行如上代码内容后,再来执行查询内容
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星