SQL语言中的子查询

(1)子查询

子查询是嵌套在另一个语句,如:selectinsertupdatedelete中的查询

子查询的例子:

             

(2)嵌套子查询

子查询可以嵌套在另外一个子查询中,SQL Server最多支持32个嵌套级别

嵌套子查询的例子:

查找价格高于'上海永久''凤凰'品牌的所有产品的平均定价的产品。

第一步: 子查询以获取品牌名称为 '上海永久' '凤凰' 的品牌标识号列表:

      

第二步: 计算属于这些品牌的所有产品的平均价格。

      

第三步: 查找价格高于 '上海永久' '凤凰' 品牌的所有产品的平均定价的产品

       

(3)相关子查询

①相关子查询是使用外部查询的值的子查询。即,它取决于外部查询的值

②相关子查询不能作为简单子查询独立执行

③对外部查询评估的每一行重复执行一次相关子查询。相关子查询也称为重复子查询

相关子查询的例子:查找价格等于其类别的最高价格的产品

        

(4)Exists运算符

        exists 运算符是一个逻辑运算符,用于检查子查询是否返回任何行

        如果子查询返回一行或多行,则exists运算符返回true

①带子查询的exists返回null示例

例子:

例子说明:查询返回包含null的结果集,这也导致exists运算符计算为true

②Exists带相关子查询示例

     例子:

          

例子说明:如果客户下达的订单数小于或等于2,则子查询返回一个空结果集

          该结果集导致exists运算符计算为false

③Exists与in示例

        例子:

            

     SQLexistsin的使用及效率:

    a:通常采用exists要比in效率高,因为in不走索引

    b:看实际情况:in适合于外表大而内表小的情况;而exists相反

    c:当a表数据与b表数据一样大时,inexists效率差不多,可选其一

④any运算符

any运算符是一个逻辑运算符,它将标量值与子查询返回单列值集进行比较

        例子:

              

          注意:some运算符等效于any运算符

⑤all运算符

           all运算符是一个逻辑运算符,它将标量值与子查询返回的单列值列表进行比较

        例子:

            

  • 5
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值