分页,排序,子查询
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';
)
)

浙公网安备 33010602011771号