【MySQL】第四部分 排序和分页
文章目录
4. 排序和分页
排序
ASC(ascend): 升序
DESC(descend):降序
注意:
-
ORDER BY 写在SELECT语句结尾
-
WHERE语句和ORDER BY语句一起使用时,WHERE写在FROM之后,ORDER BY之前
-
WHRER语句不可以使用列的别名进行筛选,只有ORDER BY可以使用列的别名
原因是:SQL语句的执行顺序问题,首先先执行FROM,在执行WHERE,此时SELECT语句还未执行,所以WHERE语句看不到别名,接着执行SELECT,最后执行ORDER BY,此时别名已经声明,那么ORDER BY就可以使用
-
多级排序,需要建立在前一个排序上有相同的列值,才会进行排序,否则不会排序
# 降序
SELECT first_name,salary,department_id
FROM employees
ORDER BY employee_id DESC;
# 升序
SELECT first_name,salary,department_id
FROM employees
ORDER BY employee_id ASC;
# 多级排序
SELECT first_name,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;
# WHERE语句和ORDER BY语句一起使用
SELECT first_name,salary "monthly_income",salary*12 "annul_income"
FROM employees
WHERE first_name LIKE "%a%"
ORDER BY annul_income DESC;
分页
为什么使用分页? 因为 约束返回结果的数量可以减少数据表的网络传输量
,也可以提升查询效率
。如果我们知道返回结果只有 1 条,就可以使用LIMIT 1
,告诉 SELECT 语句只需要返回一条记录即可SELECT 不需要扫描完整的表。
第一个“位置偏移量”参数指示MySQL从哪一行开始显示
第二个参数“条数”指示返回的记录条数。
LIMIT [位置偏移量,] 条数
需要注意:
-
第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推
-
LIMIT 子句必须放在整个SELECT语句的最后
# 查询薪资大于6000并且只输出前5个人的姓名和工资
SELECT first_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
LIMIT 0,5;
# 查询薪资大于6000并且只输出排名第10到第30人的姓名和工资
SELECT first_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
LIMIT 9,20; # 因为偏移量是从0开始所以这里需要写9
# 第21至30条记录:
SELECT * FROM 表名 LIMIT 20,10;
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82810.html