子查询和查询表达式

  这个比较实用,可能用的比较少,但是对于比较的sql查询来说,可以省去很多麻烦,直接使用子查询。

  

    子查询是一个查询内的查询。子查询的结果被DBMS使用来决定包含这个子查询的高级查询的结果。在子查询的最简单的形式中,子查询呈现在一条SQL语句的WHERE或HAVING字句内。

    select field from table where field2 > (select field from table2 where ...)

    

    子查询搜索条件(>、<、==、<=、>=):

      子查询比较测试:

        select field from table where field >= (select field from table2 where ...)

      组成员测试(IN):

        select field from table where field (NOT)IN (select field from table2 where field1 > field2)

 

存在测试(EXISTS):

    select field from table where EXISTS (select ...)

    select field from table1 where field = (select field from table2 where field1 = value) and NOT EXISTS (select * from table3 where ...)

 

限定测试(ANY 和 ALL)

    IN测试的子查询版检查数据是否等于子查询结果字段中的某些值。SQL提供了两个限定测试ANY 和 ALL,把这种概念扩展到其他比较运算符。

    ANY测试:

        ANY测试和6个SQL比较运算符一起使用,用于把一个测试值和由子查询产生的一个字段的数据值相比较。要执行这个测试,SQL使用特定的比较运算符来把测试值和字段中的每个数据值进行比较,如果有一个比较产生TRUE,那么ANY测试返回TRUE结果。

        select field from table where field < ANY (select field from table2 where field = value)

        select field from table where field < > ANY (select field from table2)

    ALL测试:

        像ANY测试一样,ALL测试和6中SQL比较运算符之一一起使用,可用于把单个测试值和由子查询产生的数据字段相比较。要执行这项测试,SQL使用特定的比较运算符来把测试值和字段中的每个数据值进行比较。如果所有的比较都生成TRUE结果,那么ALL测试返回TRUE值。

        select field from table where field < ANY (select field from table2 where field = value)

        ALL测试总能转换成对应的EXISTS测试。

转载于:https://www.cnblogs.com/fanchangfa/archive/2012/08/11/2633821.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值