union的用法:将查询结果合并

问题引入:查询工作岗位是MANACGER和SALESMAN的员工?

select ename '员工姓名',job '工作岗位' from emp where job in ('MANACGER','SALESMAN');

使用union合并的写法如下:

select ename '员工姓名',job '工作岗位' from emp where job = 'MANACGER'
union
select ename '员工姓名',job '工作岗位' from emp where job = 'SALESMAN';

union的效率要高一些。对于表连接来说,每连接一次新表,如果匹配的次数满足笛卡尔积,那么查询次数就会成倍的翻。使用union可以减少匹配的次数,在减少匹配次数的情况下,还可以完成两个结果集的拼接。

union的使用注意事项:union要求进行结果集合并的时候,两个结果集的列数和列名必须相同!!

limit

作用:将查询结果集的一部分取出来,通常放在分页查询中。

用法:limit后面跟的数字:起始下标(从0开始,默认为零),长度。==limit是在order by之后执行的!!!==

案例问题:按照薪资降序,取出排名在前五名的员工?

select ename '员工姓名',sal '员工薪资' from emp order by sal desc limit 0,5;

分页

现在有一个需求,要求每页显示3条记录。

第一页:limit 0,3

第二页:limit 3,3

第三页:limit 6,3

……

这里可以发现一个规律,limit的起始下标位置 = (页码 - 1 ) * 要求每页显示的数量