MySQL 自连接、排序、分页
1 自连接
1.1 测试用数据库:
CREATE TABLE `school`.`category`(
`categoryid` INT(3) NOT NULL COMMENT 'id',
`pid` INT(3) NOT NULL COMMENT '父id 没有父则为1',
`categoryname` VARCHAR(10) NOT NULL COMMENT '种类名字',
PRIMARY KEY (`categoryid`)
) ENGINE=INNODB CHARSET=utf8;
INSERT INTO `school`.`category` (`categoryid`, `pid`, `categoryname`) VALUES ('2', '1', '信息技术'),
('3', '1', '软件开发'),
('5', '1', '美术设计'),
('4', '3', '数据库'),
('8', '2', '办公信息'),
('6', '3', 'web开发'),
('7', '5', 'ps技术');
1.2 自连接的表格陈述
MySQL自连接的核心是:一张表拆成两张一样的表!
现对上表进行拆分:
(1)父类表:
categoryid | categoryname |
---|---|
2 | 信息技术 |
3 | 软件开发 |
5 | 美术设计 |
(2)子类表:
pid | categoryid | categoryname |
---|---|---|
3 | 4 | 数据库 |
2 | 8 | 办公信息 |
3 | 6 | web开发 |
5 | 7 |
综合以上两表可以得到父类对应的子类关系:
父类 | 子类 |
---|---|
信息技术 | 办公信息 |
软件开发 | 数据库 web开发 |
美术设计 | ps技术 |
1.3 自连接代码测试
源码:
-- 把一张表看作两个一摸一样的表
SELECT a.`categoryname` AS '父栏目',b.`categoryname` AS '子栏目'
FROM `category` AS a, `category` AS b
WHERE a.`categoryid` = b.`pid`
测试结果:
2 排序(ORDER BY)
测试用数据库使用的是我另一片博客发表的数据库,链接:https://blog.csdn.net/qq_44958172/article/details/105362696
排序: 升序ASC、 降序DESC
扫描二维码关注公众号,回复:
10845940 查看本文章
语法:ORDER BY 需要排序的字段 (ASC/DESC)
测试案例:
查询参加了Customer Relations
考试的同学信息:学号、学生姓名、科目名、分数;并对结果按照分数降序排序
代码:
-- 查询结果根据成绩降序排序
SELECT s.`studentno`, `name`, `subjectname`,`studentresult`
FROM `student` s
INNER JOIN `result` r
ON s.`studentno` = r.`studentno`
INNER JOIN `subject` sub
ON r.`subjectno` = sub.`subjectno`
WHERE `subjectname` = 'Customer Relations'
ORDER BY `studentresult` DESC
结果:
3 分页(LIMIT)
分页就是我们经常多见的每页只显示五条数据,共几页等等
为什么需要分页?
- 缓解数据库压力,给人体验更好
- 有时也不需要,例如图片一般使用瀑布流
语法: limit 当前页,页面大小
-- 以每页显示5条数据来说明
第一页 limit 0,5 --(1-1)\*5
第二页 limit 5,5 --(2-1)\*5
第三页 limit 10,5 --(3-1)\*5
...
第n页 limit (n-1)\*5,5 --(n-1)\*pagesize, pagesize
测试案例:
查询并输出学生学号、姓名、年级名称,且每页输出10条数据!
代码:
SELECT `studentno`, `name`,`gradename`
FROM student s
INNER JOIN `grade` g
ON s.`gradeid` = g.`gradeid`
LIMIT 10,10 -- 此处展示第二页
结果:
写在最后
Do nothing out of selfish ambition or vain conceit. Rather, in humility value others above yourselves, not looking to your own interests but each of you to the interests of the others.
(Philippians 2: 3-4)
To Demut and Dottie!