MySQL——自连接及联表查询练习

自连接

自己的表和自己的表连接,核心:一张表拆为两张一样的表即可。

父类:

|----------------|------------------|
| categoryid | categoryName |
| 2 | 信息技术 |
| 3 | 软件开发 |
| 5 | 美术设计 |
| | |

子类:

|---------|----------------|------------------|
| pid | categoryid | categoryName |
| 3 | 4 | 数据库 |
| 2 | 8 | 办公信息 |
| 3 | 6 | web开发 |
| 5 | 7 | ps技术 |

子类的pid = 父类的categoryid

操作:查询父类对应的子类关系

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

代码演示:

sql 复制代码
CREATE TABLE category (
	categoryid INT(10) UNSIGNED NOT NULL auto_increment COMMENT '主题ID',
	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','1','软件开发'),('4','3','数据库'),
('5','1','美术设计'),('6','3','web开发'),('7','5','PS技术'),('8','2','办公信息');

-- 查询父子信息:把一张表看成两个一模一样的表
SELECT a.categoryName AS '父栏目',b.categoryName AS '子栏目'
FROM category AS a,category AS b
WHERE a.categoryid = b.pid
相关推荐
Plastic garden5 分钟前
Redis(2) redis的高可用
java·数据库·redis
Fleshy数模35 分钟前
基于 CSV 数据分析的课堂教学问题诊断与改进建议系统
数据库·人工智能·大模型·llm
ccice0138 分钟前
硬核数据技术:驱动Gemini境像站完成从自然语言到SQL查询、数据可视化与洞察报告的全链路自动化(国内镜像免费实测
数据库·oracle
NiceCloud喜云44 分钟前
Claude API PDF 文档问答实战:从原生解析到分页引用的完整方案
java·服务器·前端·网络·数据库·人工智能·pdf
Wzx1980121 小时前
游标分页 + 数据删除:游标被删的完整解决方案
mysql
CAE虚拟与现实1 小时前
重置系统后,Postgresql不用重装
数据库·redis·postgresql·kafka
丿小王同学1 小时前
快速集群安装mysql
数据库·mysql
java1234_小锋1 小时前
Redis 支持哪些数据类型?请分别说明它们的使用场景
java·数据库·redis
傅科摆 _ py1 小时前
企业 / 校园 合法远程访问工具详解
服务器·网络·数据库
北风toto2 小时前
通过Entity 创建数据库中的表,目前只支持mysql,A.CTable使用mybatis/mybatis-plus自动创建表
数据库·mysql·mybatis