zoukankan      html  css  js  c++  java
  • MYSQL中EXISTS的用法

           语法:SELECT 字段 FROM table WHERE EXISTS(subquery);
           示例:
    SELECT * FROM A WHERE EXISTS(SELECT 1 FROM B WHERE B.id = A.id);
    Exists执行顺序如下:
      1.首先执行一次外部查询并且缓存结果集——SELECT * FROM A;
      2.遍历外部查询结果集的每一条记录的时候,各执行一次子查询。
    SELECT 1 FROM B WHERE B.id = A.id;
           如果外部查询返回100行记录,SQL就将执行101次查询,一次执行外部查询,然后为外部查询返回的每一行执行一次子查询。显然,外表小内表大的时候,执行效率非常棒。
     
           EXISTS查询返回的是什么?一个布尔值true或flase,它只在乎EXISTS()的查询中是否有记录,与具体的结果集无关。这也是为什么子查询里是 "select   1 "的原因,当然也可以select任何东西。它将主查询的结果集放到子查询中做验证,根据验证结果是true或false来决定主查询数据结果是否得以保存。
           EXISTS查询的工作原理是什么?它将外部查询结果集放到子查询中做验证,根据验证结果是true或false来决定外部查询数据是否保留。
           NOT EXISTS 的作用与 EXISTS 正相反。如果子查询没有返回行,则满足 NOT EXISTS 中的 WHERE 子句。
     
     
     
     
  • 相关阅读:
    2021牛客暑期多校训练营5
    二分图知识点温习
    Codeforces Round #735 (Div. 2)
    牛客比赛订正(3,4)
    Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解
    关于球的相关知识
    AtCoder Beginner Contest 210题解
    P7077 [CSP-S2020] 函数调用
    偏序问题学习笔记
    P1606 [USACO07FEB]Lilypad Pond G
  • 原文地址:https://www.cnblogs.com/east7/p/13097882.html
Copyright © 2011-2022 走看看