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;
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/3fed77dff1e68472d7663f508】。文章转载请联系作者。
评论