分页,排序,子查询

1. 分页和排序

where子句在order by和limit前面

排序:

升序 ASC 降序 DESC

-- 排序
SELECT `address`,s.`id`
FROM `student` AS s
LEFT JOIN `student123` AS r
ON s.id=r.id
ORDER BY  s.`id` ASC -- 升序

分页:

为了缓解数据库压力,给人更好的体验,瀑布流

语法:limit 起始页下标(从0开始),页面大小
limit 0,5 代表 1~5
limit 1,5 代表 2~6
limit 6,5 代表 7~12

第一页 0,5 (1-1)* 5
第二页 5,5 (2-1)* 5
第三页 10,5 (3-1)* 5
第n页 (n-1)* pageSize ,pageSize

-- 排序 分页
SELECT `address`,s.`id`
FROM `student` AS s
LEFT JOIN `student123` AS r
ON s.id=r.id
ORDER BY  s.`id` ASC -- 升序
LIMIT 1,2

2. 子查询与嵌套查询

本质 在where语句中嵌套一个子查询语句

where(select * from)

-- 连接查询
SELECT `studentno`,r.`subjectName`,`studentResult`
FROM `result` r
INNER JOIN `subject` sub
ON r.subjectno=sub.studentno
WHERE subjectName='数据结构'
ORDER BY studentResult DESC

-- 子查询
SELECT `studentno`,r.`subjectName`,`studentResult`
FROM `result` r
WHERE studentNo =(
	SELECT subjectNo FROM `subject`
	WHERE subjectName ='数据结构-1'

)
ORDER BY studentResult DESC;

-- 分数不小于80分的学生学号 和姓名
-- 联表查询
SELECT DISTINCT s.`studentno`,`studentName` 
FROM `student` s
INNER JOIN `result` r
ON s.studentno=r.studentno
WHERE studentResult>=80
ORDER BY r.studentResult DESC
-- 子查询
SELECT DISTINCT s.`studentno`,`studentName` 
FROM `student` s
WHERE studentno=(
	SELECT studentno FROM result
	WHERE studentResult>=80
)
-- order by

典型嵌套查询 注意:查询顺序 由里及外
-- 查询 高数2 分数不低于80分的学生学号和姓名
-- student表内有学号姓名  subject表内 subjectno subjectname  
-- result表内 studentno studentResult subjectno
SELECT studentno,studentName FROM `student` WHERE studentno=(
   SELECT studentno FROM result WHERE studentResult>=80 AND subjectno=(
	SELECT subjectno FROM `subject` WHERE `subjectName`='高等数学-2';
   )
)
posted @ 2022-07-21 17:52  蓝色的a猫  阅读(79)  评论(0)    收藏  举报