关键字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 10
10=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,通用分页相关推荐

  1. MySQL中使用LIMIT进行分页的方法

    一:分页需求: 客户端通过传递start(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和 ...

  2. 【mysql】limit实现分页

    文章目录 分页 1. 背景: 2. 实现规则 3. 拓展 4. 练习 分页 1. 背景: 背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢? 背景2:表里有 4 条数据,如果只 ...

  3. MySQL排序ORDER BY与分页LIMIT,SQL,减少数据表的网络传输量,完整详细可收藏

    文章目录 1.ORDER BY排序 2.LIMIT分页 1.ORDER BY排序 1.1 排序规则 使用 ORDER BY 子句排序 ASC(ascend): 升序 DESC(descend):降序 ...

  4. MySQL中的排序与分页

    排序规则 默认使用数据添加时的顺序排列 使用 ORDER BY 子句排序 ASC(ascend): 升序(默认的可省略不写) DESC(descend):降序 ORDER BY 子句在SELECT语句 ...

  5. c oracle 分页工具类,Util工具类 跨Oracle、MySQL通用分页查询

    /**** 跨Oracle.MySQL通用分页查询*/public classPagingUtil { public static finalString MYSQL= "MYSQL&quo ...

  6. MySQL中的limit分页优化

    MySQL中的limit分页优化 MySQL的limit优化 mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,my ...

  7. Mysql关键字之Union all说明

    Mysql关键字之Union All Union All关键字说明 Union All关键字说明 mysql中union all 关键字是连接两个人表的内容组成一张新表,要求两表字段个数一直即可. 举 ...

  8. mysql UNION ALL查询分页

    1.UNION ALL和UNION 的区别 UNION ALL理论上要比UNION的查询效率更高一些,因为UNION会将结果集中的数据进行过滤,将相同的数据进行剔除后返回,而UNION ALL不进行此 ...

  9. Mysql(软件安装、Mysql基本语法、Mysql数据操作、Mysql关键字、约束、多表查询、Mysql多表查询、数据备份、数据导入、视图)

    1.MySQL介绍 1.1数据库介绍 数据库概念 数据库就是用于存储数据的一个空间 数据存储方式的发展史 甲骨文(材料太昂贵) 竹简(太沉了,运输不方便) 纸(易损坏) 计算机(办公软件,传输不方便) ...

最新文章

  1. 我潜入清华神秘实验室,用脑机接口写了两句诗
  2. 2021年春季学期-信号与系统-第五次作业参考答案-第九小题
  3. 【Network Security!】密码攻击的原理和方法
  4. python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载
  5. 基于Node的PetShop,RESTful API以及认证
  6. C语言在计算机专业的功能,C语言程序设计在高职院校计算机专业教学中重要作用.pdf...
  7. go generate介绍及使用
  8. Python函数默认值参数的2个坑
  9. 利用aiowebsocket库爬取websocket实例:莱特币官网
  10. 活动推荐 | 首届“中新人工智能高峰论坛”,与周志华、李德毅等大咖对话未来...
  11. POJ-1251-Jungle Roads
  12. Kaggle | IEEE Fraud Detection(EDA)
  13. 树莓派+超声波模块测距
  14. 在word中插入参考文献角标
  15. Python-Locust接口压力测试
  16. [Err] 23000 - [SQL Server]不能在具有唯一索引 'IX_student_info_2' 的对象 'dbo.student_info' 中插入重复键的行
  17. 华为防火墙产品介绍及工作原理
  18. 用python写一个迁徙率计算代码
  19. Python爬虫实战,requests模块,Python实现告诉你女神节送什么礼物
  20. 控制Canon相机进行拍照,并把拍摄的照片存储到D盘

热门文章

  1. 图解各路分布式ID生成算法
  2. pfsense使用tcpdump抓包
  3. Unity 获取到Camera的cullingMask,包含多个选择
  4. 正大国际中消协提新能源车四大消费投诉,涉及锁电、智能辅助和刹车等
  5. 前端SEO优化注意事项
  6. matlab 生成lte信号,【求助】LTE PRS基带信号到射频信号如何做?具体代码如下
  7. mendeley在word上使用
  8. T213469 变变变
  9. 服务器安全性的运行与维护 理论(一)
  10. 【小程序】C语言吉他调音器-利用FFT傅里叶变换求频率实现