MySql中的数据查询语言(DQL)五:union和limit

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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值