写点什么

MySQL 基础之十:union 与 limit

用户头像
打工人!
关注
发布于: 2021 年 06 月 12 日
MySQL基础之十:union与limit

主要内容:

本篇的主要内容就是讲解 union 联合查询和 limit,用案例深入理解

union 联合查询:

联合查询顾名思义,就是可以一起查询,把查询结果集相加,就是取并集呗。

  • 案例:找出工作岗位是 SALESMAN 和 MANAGER 的员工。

看题目是找出两种工作类型的员工,首先想到的是 where 来进行过滤,别忘了我们还有一个 in 操作符呢。而且今天我们讲到的 union 也可以解决这个问题。

  • 我们先用 where 来实现一下:

mysql> select ename,job from emp where job='SALESMAN' or job='MANAGER';

+--------+----------+

| ename | job |

+--------+----------+

| ALLEN | SALESMAN |

| WARD | SALESMAN |

| JONES | MANAGER |

| MARTIN | SALESMAN |

| BLAKE | MANAGER |

| CLARK | MANAGER |

| TURNER | SALESMAN |

+--------+----------+

7 rows in set (0.08 sec)

  • 然后我们现在用 in 来实现一下:

mysql> select ename,job from emp where job in ('SALESMAN','MANAGER');

+--------+----------+

| ename | job |

+--------+----------+

| ALLEN | SALESMAN |

| WARD | SALESMAN |

| JONES | MANAGER |

| MARTIN | SALESMAN |

| BLAKE | MANAGER |

| CLARK | MANAGER |

| TURNER | SALESMAN |

+--------+----------+

7 rows in set (0.00 sec)

  • 最后我们用今天学习的 union 来进行实现:

mysql> select ename,job from emp where job='SALESMAN' union select ename,job from emp where job='MANAGER';

+--------+----------+

| ename | job |

+--------+----------+

| ALLEN | SALESMAN |

| WARD | SALESMAN |

| MARTIN | SALESMAN |

| TURNER | SALESMAN |

| JONES | MANAGER |

| BLAKE | MANAGER |

| CLARK | MANAGER |

+--------+----------+

7 rows in set (0.01 sec)

从以上三种方法的结果中可以看出,通过 union 进行查询的结果顺序和前两种不一行,和我们写的 sql 语句是对应的,先把 job='SALESMAN'的所有结果查询出来,然后再把 job='MANAGER'的结果查询出来,然后把两次的结果集进行合并,也就是取并集。

limit:

首先理解 limit 的意思就是限制,限制查询出来的结果集的数量。

小贴士:limit 是 mysql 数据库特有的,不是通用的。

limit 就是取结果集中的部分数据显示出来。

语法:

limit startIndex,lenth

startIndex:表示其实位置,从 0 开始,0 表示第一个数据。

lenth:表示取几个

  • 案例:取出工资前五名的员工

前五名的员工,是不是就是读数据进行排序,然后用 limit 进行限制数量。

mysql> select ename,sal from emp order by sal desc limit 5;

+-------+---------+

| ename | sal |

+-------+---------+

| KING | 5000.00 |

| SCOTT | 3000.00 |

| FORD | 3000.00 |

| JONES | 2975.00 |

| BLAKE | 2850.00 |

+-------+---------+

5 rows in set (0.02 sec)

其实这样写 SQL 语句也可以:mysql> select ename,sal from emp order by sal desc limit 0,5;

发布于: 2021 年 06 月 12 日阅读数: 7
用户头像

打工人!

关注

打工人! 2019.11.10 加入

InfoQ年度最佳内容获得者。 InfoQ签约作者 本人打工人一枚,自动化和控制专业入坑人一枚。目前在研究深度强化学习(DRL)技术。准备入坑互联网小白一枚。喜欢了解科技前沿技术,喜欢拍照。

评论

发布
暂无评论
MySQL基础之十:union与limit