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
相关推荐
m0_528749003 分钟前
linux编程----目录流
java·前端·数据库
大尚来也5 分钟前
Oracle索引扫描全解析:四大核心类型与性能优化实战指南
数据库
未名编程5 分钟前
【干货】MySQL 8.0 物理迁移:电脑损坏后如何通过 Data 文件夹完美恢复数据库?
数据库·mysql
lydcljie12 分钟前
mysql数据被误删的恢复方案
数据库·mysql
edisao12 分钟前
第一章:L-704 的 0.00% 偏差
前端·数据库·人工智能
x***r15114 分钟前
Xampp集成环境包安装步骤详解(附Apache、MySQL启动与本地网站搭建)
数据库·mysql·apache
大黄说说16 分钟前
MySQL 查询优化三剑客:JOIN、子查询、UNION 的选型策略与性能调优实战
数据库
砚边数影22 分钟前
架构演进:从单一NoSQL到“一库多模”的融合实践
数据库·oracle·kingbase·kingbasees·数据库平替用金仓·金仓数据库
清风~徐~来30 分钟前
【视频点播系统】Redis-SDK 介绍及使用
数据库·redis·wpf
SelectDB技术团队36 分钟前
日志成本降低 83%:云上 Elasticsearch 和 SelectDB 的基准测试及成本分析
数据库·apache