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 ) * 要求每页显示的数量