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
相关推荐
属于自己的天空14 分钟前
不用再手动查表结构了:配好 MCP,Claude Code 自己读数据库生成代码
数据库·后端
Y38153266219 分钟前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库
Databend39 分钟前
Databend 原生数据血缘:追溯指标来源,检查变更影响
大数据·数据库·sql
镜舟科技1 小时前
Semantic View 技术解析(二):业务口径如何进入数据库执行路径
数据库·sql·agent
TechWJ1 小时前
没有公网 IP 也想远程连 PostgreSQL?从本地数据库到固定 TCP 地址完整配置
大数据·数据库·网络安全·postgresql·内网穿透
得物技术2 小时前
指标平台:从语义底座到智能消费的实践路径|得物技术
数据库·人工智能·ai编程
StarRocks_labs2 小时前
当大模型调用进入执行引擎:StarRocks AI Function 全新能力解析
数据库·starrocks·sql·ai·pipeline·数据处理·join
开心麻瓜2 小时前
一条 SQL 跑了 8 秒,优化到 200ms 的全过程
mysql
TDengine (老段)3 小时前
TDengine 常见问题 TOP4
数据库·物联网·时序数据库·tdengine·涛思数据·升级·tdengine 问题
小蒜学长3 小时前
基于RFID技术的仓储管理系统设计(代码+数据库+LW)
java·数据库·spring boot·后端·rfid技术·仓储管理