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
相关推荐
AC赳赳老秦16 分钟前
文旅AI趋势:DeepSeek赋能客流数据,驱动2026智慧文旅规模化跃迁
人工智能·python·mysql·安全·架构·prometheus·deepseek
清水白石00843 分钟前
Fixture 的力量:pytest fixture 如何重新定义测试数据管理
数据库·python·pytest
Rick19932 小时前
如何保证数据库和Redis缓存一致性
数据库·redis·缓存
那个松鼠很眼熟w2 小时前
2.获取数据库连接
数据库
_ziva_4 小时前
5 分钟搭建 CSV 数据问答系统:LangChain + LLM 实战教程
jvm·数据库·oracle
JiaHao汤5 小时前
MySQL SQL 性能优化实战指南
sql·mysql·性能优化
dust_and_stars5 小时前
APT vs Snap vs Flatpak 核心对比表
运维·服务器·数据库
念越6 小时前
MySQL报错:Column count doesn‘t match value count at row 1 解决方案(超详细)
数据库·mysql
SmartBrain6 小时前
FastAPI实战(第二部分):用户注册接口开发详解
数据库·人工智能·python·fastapi
倔强的石头_7 小时前
一卡通核心交易平台的国产数据库实践解析:架构、迁移与高可用落地
数据库