`

sql的exists

 
阅读更多

exit用于check subquery是否至少返回一行数据,再结合exit判断返回true or false 

 

讲白了就是判断子查询是否有结果集(特么地后悔小学没好好学语文了)

 

语法: EXISTS  (subquery)

参数:subquery 是一个受限的select语句(不允许compute子句和into关键字)
结果类型:如果子查询有结果则返回true,否则返回flase

 

 

 

下面从百度抄的:

 

 

  1. NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。

  2.  

    结论:
    EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。 EXISTS内部有一个子查询语句(SELECT ... FROM...), 我将其称为EXIST的内查询语句。其内查询语句返回一个结果集。 EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。

  3.  

    一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。

  4.  

    分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条件,完成后再回到SELECT分析字段。最后形成一张我们要的虚表。
    WHERE关键字后面的是条件表达式。条件表达式计算完成后,会有一个返回值,即非0或0,非0即为真(true),0即为假(false)。同理WHERE后面的条件也有一个返回值,真或假,来确定接下来执不执行SELECT。
    分析器先找到关键字SELECT,然后跳到FROM关键字将STUDENT表导入内存,并通过指针找到第一条记录,接着找到WHERE关键字计算它的条件表达式,如果为真那么把这条记录装到一个虚表当中,指针再指向下一条记录。如果为假那么指针直接指向下一条记录,而不进行其它操作。一直检索完整个表,并把检索出来的虚拟表返回给用户。EXISTS是条件表达式的一部分,它也有一个返回值(true或false)。

  5.  

    在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,可以通过使用 EXISTS 条件句防止插入重复记录。
    INSERT INTO TableIn (ANAME,ASEX) 
    SELECT top 1 '张三', '男' FROM TableIn
    WHERE not exists (select * from TableIn where TableIn.AID = 7)

  6.  

    EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:
    IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

 

分享到:
评论

相关推荐

    详解SQL EXISTS 运算符

    SQL EXISTS 运算符是SQL查询中的一个关键逻辑运算符,它主要用于判断子查询是否返回至少一条记录。在理解EXISTS运算符之前,我们需要先熟悉SQL查询的基本结构。SQL(Structured Query Language)是一种用于管理关系...

    sql exists和not exists用法

    ### SQL EXISTS 和 NOT EXISTS 的用法详解 在SQL查询中,`EXISTS`与`NOT EXISTS`是非常实用的子查询操作符,它们主要用于检测是否存在满足一定条件的数据行。相较于`IN`、`NOT IN`等操作,`EXISTS`与`NOT EXISTS`...

    SQL Exists语句的使用

    在SQL查询语句中,Exists语句的使用方式

    SQL之EXISTS

    exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反 它所在的查询属于相关子查询,即子查询的查询条件依赖于外层父查询的某个属性值,处理过程一般为: 取外层...

    SQL里的EXISTS与IN

    ### SQL里的EXISTS与IN 在SQL查询语言中,`EXISTS` 和 `IN` 子句都是非常常用且重要的操作符,它们被广泛应用于复杂的查询条件中,特别是当需要检查某个子查询是否返回结果时。根据给定的信息,本文将详细解析`...

    where_exists:将SQL Exists的功能添加到ActiveRecord

    存在的地方Rails利用SQL EXISTS条件的强大功能描述 这个gem确实完成了两件事: 选择每个具有特定关联对象的模型对象选择没有任何关联对象的每个模型对象它使用SQL 来快速完成它,并使用where_exists和where_not_...

    SQL中exists的用法[借鉴].pdf

    SQL EXISTS 的用法详解 EXISTS 是 SQL 中的一个子句,用于判断是否存在满足条件的记录。它通常与 SELECT、FROM、WHERE 等子句结合使用,以实现复杂的查询操作。 EXISTS 的用法 EXISTS 子句的基本格式为:`EXISTS...

    sql中exists的用法

    SQL 中 EXISTS 的用法简介 exists 是 SQL 中最常用的子查询操作符之一,用于检测子查询是否返回至少一个记录。exists 的使用场景非常广泛,包括对多表之间的关系进行查询、检测记录的存在性等。 在 SQL 中,exists...

    (VB.net 连接 SQL server数据库案例源码)数据收纳箱系统.zip

    (VB.net 连接 SQL server数据库案例源码)数据收纳箱系统.zip 源码开放,datagridview1控件列示等等

    sql server2005 exists使用方法

    ### SQL Server 2005 EXISTS 使用方法详解 #### 一、EXISTS 子句概述 在 SQL Server 2005 中,`EXISTS` 是一个非常实用的子句,用于检查子查询是否返回至少一行数据。如果子查询返回至少一行数据,则 `EXISTS` ...

    sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

    SQL语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句 SQL语句优化是数据库性能优化的重要方面之一。在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下,使用EXISTS...

    exists SQL用法详解、exists和not exists的常用示例

    在SQL查询中,`EXISTS`和`NOT EXISTS`是两个非常重要的子查询操作符,它们主要用于判断子查询是否返回结果。本篇文章将详细介绍这两个关键字的用法,并通过实例进行解析。 首先,`EXISTS`的语法是:主查询中的条件...

    浅析SQL中WHERE EXISTS子查询.pdf

    浅析SQL中WHERE EXISTS子查询 SQL(Structured Query Language)是一种功能强大、通用的关系数据库语言,而SQL语言的核心是SELECT语句,其中WHERE子句的条件表达式表现得灵活而复杂,和谓词DISJunctive所形成的嵌套...

    sql in,exists,not in,not exists区别

    SQL 中 IN、EXISTS、NOT IN、NOT EXISTS 的区别 IN、EXISTS、NOT IN、NOT EXISTS 是 SQL 中四种常用的条件判断运算符,它们之间的区别主要体现在使用场景、执行效率和语法结构上。 IN IN 是一种条件判断运算符,...

    经典SQL查询总结关于Exists,not Exists.in ,not in效率的说明。

    ### 经典SQL查询总结关于Exists, not Exists, IN, not IN 效率的说明 在数据库查询操作中,存在着多种方法来实现相似的功能,但不同的实现方式在性能上可能会有显著差异。本文将深入探讨 SQL 中 `EXISTS`, `NOT ...

    sql case when exists not exists in not in

    在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...

    SQL中EXISTS与IN

    ### SQL中EXISTS与IN的区别及应用场景 #### EXISTS详解 **定义与原理** - **基本概念**:`EXISTS` 是 SQL 中的一个谓词,用于判断子查询是否有结果返回,而不是关心具体的返回值。它主要关注子查询是否至少有一行...

Global site tag (gtag.js) - Google Analytics