zoukankan      html  css  js  c++  java
  • sql server——子查询

    简述:

    在查询语句中包含着有另外一条查询语句,被包含的查询语句称为子查询,包含着子查询的查询就称为父查询。

    总之,子查询就是在查询语句里嵌套一条或者多条查询语句。


    常用子查询分类:

    一、独立子查询

     特征:子查询语句可以独立运行

    二、相关子查询

    select *  from student where  majorId = (select majorId from  major where majorId=student.majorId)

    特征:子查询中引用了父查询中的字段,依赖于父查询


    子查询的使用

    一、子查询做为查询条件

    描述:当一条查询语句需要一个外部的值做为条件的时候,可以使用一个独立的查询先得到这个值,在将值返回进行条件的判断。

    注意1:使用子查询做为条件的时候,子查询的查询结果只能返回一列的值,如果返回多列将报错:

    注意2:子查询如果返回单列多行的结果,应该在查询语句where 后将"="换成"in",in关键字可以接收多行结果集。使用"="接收多行报错:

    注意3:如果子查询做为条件返回的是,多行多列的结果集,可以采用exists接收查询结果

    二、将子查询做为一个结果集

    select * from  (select  *  from student where majorId=1) tab where stuGender=1

    注意:将子查询做为结果集,那么必须要为这个结果集取一个别名

    三、将子查询做为查询语句中的某一列

    select  stuName,(select majorName  from major where student.majorId=major.majorId) from  student

    四、子查询实现分页

     

    方式1:

    --pageIndex=2  pageSize=5
    select * from (select ROW_NUMBER() over (order by did) as num ,* from DonationDetail ) tab
    where num>=6 and num <=10

    方式2:

    --pageIndex=3  pageSize=5
    select top 5 * from (select ROW_NUMBER() over (order by did)  as num,* from DonationDetail) tab
    where num not in (select top (3*5-5) ROW_NUMBER() over (order by did) as num2 from DonationDetail) 

    ROW_NUMBER() over (order by 字段):

    根据指定的字段排序,对排序后的结果集的每一行添加一个不间断的行号。

    用的时候需注意:如果使用生成行号的查询用作结果集,那么必须为该结果集取一个别名,同时生成的行号字段也要取一个别名

  • 相关阅读:
    redis客户端连接,最大连接数查询与设置
    基于php实现QQ授权登陆 --qq授权登录
    在H5页面内通过地址调起高德地图实现导航
    数据库备份的两种方法
    ThinkPHP5.0 实现 app支付宝支付功能
    jQuery选取所有复选框被选中的值并用Ajax异步提交数据
    php 微信公众号接入支付宝支付
    MySQL查询优化
    php函数的使用技巧
    安装Django时解决的问题-mysql及访问(附pycharm激活)
  • 原文地址:https://www.cnblogs.com/green-jcx/p/5904166.html
Copyright © 2011-2022 走看看