zoukankan      html  css  js  c++  java
  • Exist/In 使用

    exists表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql语句,如果为空就表示where条件不成立,sql语句就 不会执行。
    not exists和exists相反,子查询语句结果为空,则表示where条件成立,执行sql语句。负责不执行。

     EXISTS里的子查询结果集非空,EXISTS()子句的值就是true。 
      EXISTS里的子查询结果集为空,EXISTS()子句的值就是false。 

     参考一下论述: 
       带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 
       使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值否则返回假值。 
       由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值, 
       给出列名无实际意义。 


    4 、exists和in 

          in子句通常用在不相关子查询中。通常先执行子查询,将子查询的结构用于父查询。 
          子查询的查询条件不依赖于父查询,这类子查询称为不相关子查询。 
          

          关键字: 在Oracle SQL中取数据时in 和 exists 的区别? 
      在Oracle SQL中取数据时有时要用到in 和 exists 那么他们有什么区别呢? 

    如果查询的两个表大小相当,那么用in和exists差别不大。 
    如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 
    例如:表A(小表),表B(大表)

    通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。
    Oracle在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在一个加了索引的临时表中。在执行子查询之前,
    系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。 

  • 相关阅读:
    Codeforces Round #279 (Div. 2) C. Hacking Cypher 机智的前缀和处理
    Codeforces Round #279 (Div. 2) A. Team Olympiad 水题
    Codeforces Round #279 (Div. 2) B
    利用Hog特征和SVM分类器进行行人检测
    opencv 支持向量机SVM分类器
    opencv hog算子
    NOIP 2008 传纸条 NOIP 2000 方块取数 多线程DP
    POJ 1654 Area 计算几何
    hihocoder #1015 KMP
    HDU 1722 Cake 数学题
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11126377.html
Copyright © 2011-2022 走看看