目录
一、union合并查询结果集
案例:查询工作岗位是MANAGER和SALESMAN的员工?
select ename, job from emp where job = 'MANAGER'
union
select ename,job from emp where job = 'SALESMAN';
union的效率要高一些。对于表连接来说,每连接一次新表,则匹配的次数满足笛卡尔积,成倍的翻。但是union可以减少匹配的次数。在减少匹配次数的情况下,还可以完成两个结果集的拼接。(union把乘法变成了加法运算)
注意:
union在进行结果集合并的时候,要求两个结果集的列数相同。
结果集合并时列和列的数据类型也要一致
二、limit
1、limit是将查询结果集的一部分取出来,通常使用在分页查询当中。
分页的作用是为了提高用户的体验,因为一次全部都查出来,用户体验差。可以一页一页翻页看。
2、limit怎么用
完整用法:limit startIndex, length
startIndex是起始下标,length是长度。起始下标从0开始。
缺省用法:limit5;这是取前5.
按照薪资降序,取出排名在前5名的员工
select ename,sal from emp order by sal desc limit 5;
3、注意:mysql当中limit在order by之后执行!!!!!!
4、取出工资排名在[3-5]名的员工?
select
ename , sal
from
emp
order by
sal desc
limit
2,3;
分页:每页显示pagesize条记录
第pageNo页:limit (pageNo - 1 ) * pageSize , pagesize
public static void main (string[] args){
// 用户提交过来一个页码,以及每页显示的记录条数
int pageNo=5;//第5页
int pagesize =10;//每页显示10条
int startIndex = (pageNo - 1) * pageSize;
Striag sql = "select ...limit " + startIndex + ", " + pageSize;
}
记公式:limit (pageNo-1)*pagesize , pagesize