DQL-自连接

SEED

-- 自连接数据库:
CREATE TABLE `school`.`category`( `categoryid` INT(3) NOT NULL COMMENT 'id', `pid` INT(3) NOT NULL COMMENT '父id 没有父则为1', `categoryname` VARCHAR(10) NOT NULL COMMENT '种类名字', PRIMARY KEY (`categoryid`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci; 

insert into `school`.`category` (`categoryid`, `pid`, `categoryname`) values ('2', '1', '信息技术');
insert into `school`.`category` (`categoryid`, `pid`, `categoryname`) values ('3', '1', '软件开发');
insert into `school`.`category` (`categoryid`, `pid`, `categoryname`) values ('5', '1', '美术设计');
insert into `school`.`category` (`categoryid`, `pid`, `categorynamE`) values ('4', '3', '数据库'); 
insert into `school`.`category` (`categoryid`, `pid`, `categoryname`) values ('8', '2', '办公信息');
insert into `school`.`category` (`categoryid`, `pid`, `categoryname`) values ('6', '3', 'web开发'); 
insert into `school`.`category` (`categoryid`, `pid`, `categoryname`) values ('7', '5', 'ps技术');

思路: 可以拆分成两个表

categoryid categoryname
2 信息技术
3 软件开发
5 美术设计
pid categoryname
3 数据库
2 办公信息
3 web开发
5 ps技术

想要得到如下结果:

父栏目 子栏目
软件开发 数据库
软件开发 web开发
美术设计 ps技术
信息技术 办公信息

解题答案:

SELECT a.categoryname AS '父栏目', b.categoryname AS '子栏目'
FROM category AS a , category AS b
WHERE a.categoryid = b.pid
原文地址:https://www.cnblogs.com/menglingxu/p/13884079.html