当前位置:网站首页>MySQL --- 数据库查询 - 排序查询、分页查询
MySQL --- 数据库查询 - 排序查询、分页查询
2022-07-05 13:04:00 【小雪菜本菜】
排序查询
通过条件查询语句可以查询到符合用户需要的数据,但是查询到的数据一般都是按照数据最初被添加到表中的顺序来显示,先添加的先显示,后添加的后显示。为了使查询结果的顺序满足用户的要求,MySQL 提供了 ORDER BY 关键字来对查询结果进行排序。
在实际应用中经常需要对查询结果进行排序,比如,在网上购物时,可以将商品按照价格、数量进行排序;在医院的挂号系统中,可以按照挂号的先后顺序进行排序等。
语法
SELECT 字段名 FROM 表名 ... ORDER BY 排序字段名 [ASC|DESC],[排序字段名 [ASC|DESC]];
语法说明
排序字段名:表示需要排序的字段名称,如果有多个字段用逗号隔开。
排序规则:ASC|DESC:
ASC
表示字段按升序排序;DESC
表示字段按降序排序。其中 [ ]表示可选关键字 ASC
为默认值,默认按升序排列。
特点
ORDER BY子句一般放到查询语句的最后面,LIMIT字句除外。
当排序的字段中存在空值 NULL 时,ORDER BY 会将该空值作为最小值来对待。
ORDER BY 指定多个字段进行排序时,MySQL 会按照字段的顺序从左到右依次进行排序。例如,一开始按照 job 排序,当 job 有重复值的时候,就会按指定的下一个字段进行排序
注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,MySQL 将不再对第二个字段进行排序。
查询需求
1.根据姓名对员工进行升序排序
SELECT * FROM emp ORDER BY ename ASC;
2.查询入职时间大于1981年6月6日的员工信息,并按照入职时间升序排列
-- SQL表 --
-- 查询入职时间大于1981年6月6日的员工信息
SELECT * FROM emp WHERE hiredate>'1981-6-6';
-- 查询入职时间大于1981年6月6日的员工信息,并按照入职时间升序排列
SELECT * FROM emp WHERE hiredate>'1981-6-6' ORDER BY hiredate ASC;
3.根据工作职位,进行升序排列,职位相同的情况下,再根据入职时间降序排列
对某一个字段先排序,如果第一个排序字段有重复的情况下,就按第二个字段进行排序
-- SQL表 --
-- 根据工作职位进行升序排列
SELECT * FROM emp ORDER BY job ASC;
-- 根据工作职位进行升序排列,在职位相同的情况下,再根据入职时间降序排列 用逗号分隔需要排序的字段
SELECT * FROM emp ORDER BY job ASC,hiredate DESC;
4.查询工资不在1000到2000之间的员工的姓名和工资,工资按降序排列
-- SQL表 --
-- 查询工资不在1000到2000之间的员工的姓名和工资
SELECT ename,sal FROM emp WHERE sal NOT BETWEEN 1000 AND 2000;
-- 查询工资不在1000到2000之间的员工的姓名和工资,工资按降序排列
SELECT ename,sal FROM emp WHERE sal NOT BETWEEN 1000 AND 2000 ORDER BY sal DESC;
5.按工作职位进行分组,查看每个工作职位的人数,工作职位按升序排列
-- SQL表 --
-- 按工作职位进行分组,查看每个工作职位的人数
SELECT job,COUNT(*) FROM emp GROUP BY job;
-- 按工作职位进行分组,查看每个工作职位的人数,工作职位按升序排列
SELECT job,COUNT(*) FROM emp GROUP BY job ORDER BY job ASC;
分页查询
在前面的查询中,一般直接把所有字段都查询出来了,对于比较多的数据,如果在一个页面全部显示,查看起来会眼花缭乱。如果能进行分页显示,将更加快捷、清新的浏览!
语法
SELECT 字段名 FROM 表名 LIMIT 起始索引,查询记录数;
特点
起始索引从0开始编号,起始索引 = (查询页码 - 1) * 每页显示记录数
有 5 条数据,3 条数据分为一页,如果查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 3,如果查询的是第二页数据,起始索引从 3 开始,查询记录数可以直接写 3,如果少了只会显示两条,如果多了最多只显示 3 条
查询需求
1.查询第一页员工数据,每页展示 10 条记录
-- 查询第一页员工数据,每页展示10条记录
SELECT * FROM emp LIMIT 0,10;
-- 查询第二页员工数据,每一页显示10条数据
SELECT * FROM emp LIMIT 10,10;
-- 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数 (2-1)*10
2.查询工资大于1500的员工数据,按工资升序排列,并分页,每页展示5条数据
-- 查询工资大于1500的员工数据,按工资升序排列并分页,每页展示5条数据
SELECT * FROM emp WHERE sal>1500 ORDER BY sal ASC LIMIT 0,5;
边栏推荐
- 峰会回顾|保旺达-合规和安全双驱动的数据安全整体防护体系
- Difference between avc1 and H264
- Realize the addition of all numbers between 1 and number
- Cf:a. the third three number problem
- Flutter InkWell & Ink组件
- 同事半个月都没搞懂selenium,我半个小时就给他整明白!顺手秀了一波爬淘宝的操作[通俗易懂]
- APICloud Studio3 API管理与调试使用教程
- 数据湖(七):Iceberg概念及回顾什么是数据湖
- RHCSA4
- Get to know linkerd project for the first time
猜你喜欢
I'm doing open source in Didi
Word document injection (tracking word documents) incomplete
It's too convenient. You can complete the code release and approval by nailing it!
Android本地Sqlite数据库的备份和还原
Changing JS code has no effect
蜀天梦图×微言科技丨达梦图数据库朋友圈+1
Detailed explanation of navigation component of openharmony application development
[cloud native] use of Nacos taskmanager task management
MSTP and eth trunk
[Nacos cloud native] the first step of reading the source code is to start Nacos locally
随机推荐
SAP UI5 ObjectPageLayout 控件使用方法分享
APICloud Studio3 API管理与调试使用教程
数据湖(七):Iceberg概念及回顾什么是数据湖
SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
How to realize batch sending when fishing
LeetCode20.有效的括号
Shu tianmeng map × Weiyan technology - Dream map database circle of friends + 1
函数传递参数小案例
Alibaba cloud SLB load balancing product basic concept and purchase process
使用 jMeter 对 SAP Spartacus 进行并发性能测试
CAN和CAN FD
RHCSA4
Hiengine: comparable to the local cloud native memory database engine
Shi Zhenzhen's 2021 summary and 2022 outlook | colorful eggs at the end of the article
Small case of function transfer parameters
峰会回顾|保旺达-合规和安全双驱动的数据安全整体防护体系
SAE international strategic investment geometry partner
go map
155. 最小栈
Rocky basics 1