子查询+UNION+LIMIT

        定义:select中嵌套select,嵌套的select语句称为子查询语句。

一,where中的子查询:

        示例:

        select productName,productCount from bill
    -> where productCount>=(select avg(productCount) from bill);

        后面的子查询语句相当于先把平均值找出来,然后再找到大于平均值的信息。

二,from中的子查询:

        可以将from后面的子查询的结果当作一张临时表。

        select t.*,s.grade from (select avg(sal) as avgsal from emp group by job) as t join s 

        where t.avgsal between s.losal and s.hisal;

        这里的t表的是sal的平均值的搜索结果,因为搜索生成的这张表中avg(sal)这行在后面的where比较中要用到,不能用本来的字段名avg(sal),所以要用别名。

三,select后的子查询(不常用)

四,union合并查询结果

        示例:

        > select contact from address where id=1
       -> union
       -> select contact from address where id=3;

        跟使用in或or结果一样,但是union的效率高一些。表连接由于符合笛卡尔积的规律,每连接一个新表,查询数量翻倍,但是union可以减少查询次数。

Notations:uinion在合并结果的时候要求两个结果列数相同,在mysql中可以列的数据类型不一致,但oracle中要求数据类型相同。

四,limit

        limit将查询结果部分取出来,通常用于分页查询中。如百度的搜索结果。分页是为了提高用户的体验效果。示例:

     > select contact from address
    -> limit 1,2;

        limit后面跟两个数字前一个是起始下标,后一个是长度。如果只有一个数字就是默认从0开始。

        limit执行顺序在order by的后面。如取出升序排列前四名:

     > select contact from address
    -> order by tel asc
    -> limit 4;

五,limit进行分页

        分页的每页显示pageSize条数据,每页开始的序号为(分页的页码-1)*pageSize。所以分页的通用公式:

limit (pageNo-1)*pageSize,pageSize;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值