-- 自连接
CREATE TABLE`category`(
`categoryid`INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT'主题',
`pid`INT(10)NOT NULL COMMENT '父id',
`categoryName`VARCHAR(50)NOT NULL COMMENT'主题名字',
PRIMARY KEY(`categoryid`)
)ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
INSERT INTO `category`(`categoryid`,`pid`,`categoryName`)
VALUES('2','1','信息技术'),
('3','3','软件开发'),
('4','3','数据库'),
('5','1','美术设计'),
('6','3','web开发'),
('7','5','ps技术'),
('8','2','办公信息');
/*自己的表和自己的表连接,核心:一张表拆为两张一样的表即可
父类
categoryid categoryName
2 信息技术
3 软件开发
5 美术设计
子类
pid categoryid categoryName
3 4 数据库
2 8 办公信息
3 6 web开发
5 7 ps技术
操作:查询父类对应子类关系
父类 子类
信息技术 办公信息
软件开发 数据库
软件开发 web开发 */
-- 查询父子信息:把一张表看为两个一模一样的表
SELECT a.`categoryName` AS '父栏目',b.`categoryName` AS '子栏目'
FROM `category` AS a,`category` AS b
WHERE a.`categoryid`=b.`pid`
-- 联表查询(学生的学号,学生姓名,性别)
SELECT s.`id`,s.`name`,ss.`sex`
FROM `student2` s
INNER JOIN `student2_copy` ss
ON s.`id` = ss.`id`
/*关于数据库报错有歧义的列名
原因是,在多表查询时,查询出的结果列字段在多表中重复出现,需要使用别名.列明查询
select语法
select[all | distinct]
{*|table.*[table.fieldl[as aliasl][,table.field2[as alias2]][......]]}
from table_name[as table_alias]
[left | right | inner join table_name]联合查询
[where...]指定结果需满足的条件
[group by ...]指定结果按照哪几个字段来分组
[having]过滤分组的记录必需满足的次要条件
[order by]指定查询记录按一个或多个条件排序
[limit {[offset,]row_count | row_countoffset offset}];指定查询的记录从哪条至哪条
注:[]代表可选的,{}代表必选的*/
标签:category,categoryName,练习,pid,查询,联表,table,categoryid From: https://www.cnblogs.com/ly123dcom/p/17895413.html