• 子查询和查询表达式


      这个比较实用,可能用的比较少,但是对于比较的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测试。

  • 相关阅读:
    js实现小球碰撞游戏
    jquery实现简易的计算器
    js中的substr和substring区别
    学习笔记:模拟退火
    解题报告:luogu P4879
    解题报告:CF58C
    解题报告:luogu P1160
    解题报告:CF1244D
    学习笔记:三分法(唔,好像不是唉)
    解题报告: CF1288C
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/2633821.html
Copyright © 2020-2023  润新知