老师,这个left join连接怎么出现这样的结果,看不懂?

老师,这个left join连接怎么出现这样的结果,看不懂?

/*创建数据分类表cate*/
create table cate(
	id smallint unsigned not null auto_increment key,
    cateName varchar(100) not null unique,
    pId  smallint unsigned not null default 0
)engine=innodb charset=UTF8;
/*插入顶级分类*/
insert cate(cateName,pId) values('服装',0),('数码',0),('玩具',0);
/*插入服装子分类*/
insert cate(cateName,pId) values('男装',1),('女装',1),('内衣',1);
/*插入数码子分类*/
insert cate(cateName,pId) values('电视',2),('冰箱',2),('洗衣s机',2);
/*插入玩具子分类*/
insert cate(cateName,pId) values('爱马仕',3),('LV',3),('GUCCI',3);
/*插入男装子分类*/
insert cate(cateName,pId) values('夹克',4),('衬衫',4),('裤子',4);
/*插入电视子分类*/
insert cate(cateName,pId) values('液晶电视',10),('等离子电视',10),('背投电视',10);
select s.id,s.cateName as scateName,p.cateName as pcateName from cate as s left join cate as p on s.pId=p.id;

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

正在回答 回答被采纳积分+1

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

2回答
好帮手慕阿满 2020-09-04 10:01:25

同学你好,顺序乱的可能是排序方法不同造成的,同学可以使用order by指定排序方式再试试。例如: 

select 语句 order by a.id;

祝:学习愉快~

好帮手慕小班 2020-09-03 12:06:43

同学你好,贴出的sql语句中,通过左连接pId的字段进行连接,比如男装这条数据,这条数据的id为4,pId(父id)是1服装,对应连接展示,就是id为4的男装,父分类是服装。

id为1的服装数据,pId(父id)为0,对应并没有0对应的父条目,所以id为1的服装对应父分类为null。其余记录,参考如上形式理解。

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

如果同学想表达的不是这个意思,还麻烦同学具体描述一下。

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

  • 提问者 qq_就是这样_1 #1
    那老师,在我截的图中为什么显示的顺序是乱的
    2020-09-03 20:16:27
  • 提问者 qq_就是这样_1 #2
    也就是为什么第一个显示的GUCCI
    2020-09-03 20:17:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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