MySQL关键字union,limit,通用分页
关键字union,limit,通用分页
union合并查询结果集
- 案例:查询工作岗位是MANAGER和SALESMAN的员工
//写法一
select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';+--------+----------+
| ename | job |
+--------+----------+
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| JONES | MANAGER |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| TURNER | SALESMAN |
+--------+----------+
7 rows in set (0.00 sec)
//写法二
select ename,job from emp where job in( 'MANAGER','SALESMAN');+--------+----------+
| ename | job |
+--------+----------+
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| JONES | MANAGER |
| MARTIN | SALESMAN |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| TURNER | SALESMAN |
+--------+----------+
7 rows in set (0.00 sec)
使用union
select ename,job from emp where job = 'MANAGER'
union
select ename,job from emp where job = 'SALESMAN';+--------+----------+
| ename | job |
+--------+----------+
| JONES | MANAGER |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| MARTIN | SALESMAN |
| TURNER | SALESMAN |
+--------+----------+
7 rows in set (0.00 sec)
union的效率要高一些,对于表连接来说,每连接一次新表,则匹配的次数满足笛卡尔积,成倍的翻。但是union可以减少匹配次数,在减少匹配次数的情况下,还可以完成两个结果集的拼接。
a 连接 b 连接 c
a 10 条记录
b 10条记录
c 10 条记录
匹配次数是:1000
a 连接 b 1010=100次
a 连接 c 1010=100次
使用union的话是:100+100=200次
union把乘法变成了加法
union使用注意事项
1.union在进行结果合并时,要求两个结果集的列数相同
select ename,job from emp where job = 'MANAGER'
union
select enamefrom emp where job = 'SALESMAN';ERROR 1222 (21000): The used SELECT statements have a different number of columns
2.MySQL可以,Oracle语法严格,不可以,要求结果集合并列时列和列的数据类型也要相同。
select ename,job from emp where job = 'MANAGER'
union
select ename,sal from emp where job = 'SALESMAN';+--------+---------+
| ename | job |
+--------+---------+
| JONES | MANAGER |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| ALLEN | 1600 |
| WARD | 1250 |
| MARTIN | 1250 |
| TURNER | 1500 |
+--------+---------+
7 rows in set (0.00 sec)
limit
- limit是将查询结果集的一部分取出来,通常用在分页查询中
完整用法:limit startIndex , length
startIndex是起始下标,默认从0开始, length是长度
缺省用法:limit length ,取前length 个
分页的作用是为了提高用户的使用体验,一次显示全部结果,用户体验差。
limit如何使用?
- 案例:按照薪资降序,取出排名在前五的员工名字,要求显示员工名和工资
selectename,sal
fromemp
order bysal desc
limit 5;+-------+---------+
| ename | sal |
+-------+---------+
| KING | 5000.00 |
| FORD | 3000.00 |
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)
selectename,sal
fromemp
order bysal desc
limit 0,5;+-------+---------+
| ename | sal |
+-------+---------+
| KING | 5000.00 |
| FORD | 3000.00 |
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)
注意:limit在order by 之后执行!
- 案例:取出工资排名在[3-5]名的员工
select ename,sal
from emp
order by sal desc
limit 2,3;+-------+---------+
| ename | sal |
+-------+---------+
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
3 rows in set (0.00 sec)
2表示起始位置从下标2开始,就是第三条记录开始;3表示长度。
分页
每页显示3条记录
第1页:limit 0,3 [ 0 1 2 ]
第2页:limit 3,3 [ 3 4 5 ]
第3页:limit 6,3 [ 6 7 8 ]
第4页:limit 9,3 [ 9 10 11 ]
每页显示pageSize条记录,第pageNo页:limit (pageNo - 1)*pageSize,pageSize
关于DQL语句的总结
一条完整的select语句
select...
from...
where...
group by...
having...
order by...
limit...
执行顺序:
1.from
2.where
3.group by
4.having
5.select
6.order by
7.limit
MySQL关键字union,limit,通用分页相关推荐
- MySQL中使用LIMIT进行分页的方法
一:分页需求: 客户端通过传递start(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和 ...
- 【mysql】limit实现分页
文章目录 分页 1. 背景: 2. 实现规则 3. 拓展 4. 练习 分页 1. 背景: 背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢? 背景2:表里有 4 条数据,如果只 ...
- MySQL排序ORDER BY与分页LIMIT,SQL,减少数据表的网络传输量,完整详细可收藏
文章目录 1.ORDER BY排序 2.LIMIT分页 1.ORDER BY排序 1.1 排序规则 使用 ORDER BY 子句排序 ASC(ascend): 升序 DESC(descend):降序 ...
- MySQL中的排序与分页
排序规则 默认使用数据添加时的顺序排列 使用 ORDER BY 子句排序 ASC(ascend): 升序(默认的可省略不写) DESC(descend):降序 ORDER BY 子句在SELECT语句 ...
- c oracle 分页工具类,Util工具类 跨Oracle、MySQL通用分页查询
/**** 跨Oracle.MySQL通用分页查询*/public classPagingUtil { public static finalString MYSQL= "MYSQL&quo ...
- MySQL中的limit分页优化
MySQL中的limit分页优化 MySQL的limit优化 mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,my ...
- Mysql关键字之Union all说明
Mysql关键字之Union All Union All关键字说明 Union All关键字说明 mysql中union all 关键字是连接两个人表的内容组成一张新表,要求两表字段个数一直即可. 举 ...
- mysql UNION ALL查询分页
1.UNION ALL和UNION 的区别 UNION ALL理论上要比UNION的查询效率更高一些,因为UNION会将结果集中的数据进行过滤,将相同的数据进行剔除后返回,而UNION ALL不进行此 ...
- Mysql(软件安装、Mysql基本语法、Mysql数据操作、Mysql关键字、约束、多表查询、Mysql多表查询、数据备份、数据导入、视图)
1.MySQL介绍 1.1数据库介绍 数据库概念 数据库就是用于存储数据的一个空间 数据存储方式的发展史 甲骨文(材料太昂贵) 竹简(太沉了,运输不方便) 纸(易损坏) 计算机(办公软件,传输不方便) ...
最新文章
- 我潜入清华神秘实验室,用脑机接口写了两句诗
- 2021年春季学期-信号与系统-第五次作业参考答案-第九小题
- 【Network Security!】密码攻击的原理和方法
- python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载
- 基于Node的PetShop,RESTful API以及认证
- C语言在计算机专业的功能,C语言程序设计在高职院校计算机专业教学中重要作用.pdf...
- go generate介绍及使用
- Python函数默认值参数的2个坑
- 利用aiowebsocket库爬取websocket实例:莱特币官网
- 活动推荐 | 首届“中新人工智能高峰论坛”,与周志华、李德毅等大咖对话未来...
- POJ-1251-Jungle Roads
- Kaggle | IEEE Fraud Detection(EDA)
- 树莓派+超声波模块测距
- 在word中插入参考文献角标
- Python-Locust接口压力测试
- [Err] 23000 - [SQL Server]不能在具有唯一索引 'IX_student_info_2' 的对象 'dbo.student_info' 中插入重复键的行
- 华为防火墙产品介绍及工作原理
- 用python写一个迁徙率计算代码
- Python爬虫实战,requests模块,Python实现告诉你女神节送什么礼物
- 控制Canon相机进行拍照,并把拍摄的照片存储到D盘