id 怎么不是按顺序?

id 怎么不是按顺序?

http://img1.sycdn.imooc.com//climg/5df0f30309baa85011970572.jpg

-- 用户表 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;


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,这是因为受编码方式的影响,使用utf-8字符集排序时,汉字排序并不是按照字母顺序来排序的,所以就会出现同学所说的有按照顺序的排序。

    我们如果修改一下字符编码,改为GBK就会按照汉字顺序来排序了,比如,老师写的小例子

http://img1.sycdn.imooc.com//climg/5df220e6095da6db04820580.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 Ctrlzhao 2019-12-12 17:12:52

再比如,我重新创建一个新的简单的表,还是没有按照顺序排序http://img1.sycdn.imooc.com//climg/5df2048809a87d3b16510430.jpg

好帮手慕小班 2019-12-12 11:13:59

同学你好,

运行同学代码,id没有按照顺序是因为在pro表中的id的顺序是没有正常排序,例:

http://img1.sycdn.imooc.com//climg/5df1af8f0990009f03570175.jpg

所以对应连接查询的结果也是如上所示的内容。对应我们可以发现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);

执行如上代码内容后,再来执行查询内容

http://img1.sycdn.imooc.com//climg/5df1b06e093fabbe04290239.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 Ctrlzhao #1
    我看不明白,以前都是正常,为什么现在一插入就不按照顺序?
    2019-12-12 17:10:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师