1、union (可以将查询结果集相加)
合并结果集的时候,需要查询字段对应个数相同。在Oracle中更严格,不但要求个数相同,而且还要求类型对应相同。
举例:
案例:找出工作岗位是SALESMAN和MANAGER的员工?
第一种:or
select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
第二种:in
select ename,job from emp where job in('MANAGER','SALESMAN');
第三种:union
select ename,job from emp where job = 'MANAGER'
union
select ename,job from emp where job = 'SALESMAN';
两张不相干的表中的数据拼接在一起显示?
select ename from emp
union
select dname from dept;
±-----------+
| ename |
±-----------+
| SMITH |
| ALLEN |
| WARD |
| JONES |
| MARTIN |
| BLAKE |
| CLARK |
| SCOTT |
| KING |
| TURNER |
| ADAMS |
| JAMES |
| FORD |
| MILLER |
| ACCOUNTING |
| RESEARCH |
| SALES |
| OPERATIONS |
±-----------+
mysql> select ename,sal from emp
-> union
-> select dname from dept;//ERROR 1222 (21000): The used SELECT statements have a different number of columns
2.limit
limit 的使用(重点中的重点,以后分页查询全靠它了。)
1、limit是mysql特有的,其他数据库中没有,不通用。(Oracle中有一个相同的机制,叫做rownum)
2、limit取结果集中的部分数据,这是它的作用。
3、语法机制:
limit startIndex, length
startIndex表示起始位置,从0开始,0表示第一条数据。
length表示取几个
案例:取出工资前5名的员工(思路:降序取前5个)
select ename,sal from emp order by sal desc;
取前5个:
select ename,sal from emp order by sal desc limit 0, 5;
select ename,sal from emp order by sal desc limit 5;
4.limit是sql语句最后执行的一个环节:
-
select 5 ... from 1 ... where 2 ... group by 3 ... having 4 ... order by 6 ... limit 7 ...;
举例:
案例:找出工资排名在第4到第9名的员工?
select ename,sal from emp order by sal desc limit 3,6;
5、通用的标准分页sql?
每页显示3条记录:
第1页:0, 3
第2页:3, 3
第3页:6, 3
第4页:9, 3
第5页:12, 3
每页显示pageSize条记录:
第pageNo页:(pageNo - 1) * pageSize, pageSize
pageSize是什么?是每页显示多少条记录
pageNo是什么?显示第几页
java代码{
int pageNo = 2; // 页码是2
int pageSize = 10; // 每页显示10条
limit (pageNo - 1) * pageSize, pageSize
}