`

sql server 2005 in 和 not exists的一个微妙区别

阅读更多

sql server的下面2个条件

 

1。

and  not exists (select [referenceid] from [tbl_prj_metatypevaluepool] where [metatypestructonid]=b.id and [referenceid] = c.id)

 

2。

 and  c.id not in (select [referenceid] from [tbl_prj_metatypevaluepool] where [metatypestructonid]=b.id)

 

这2个条件功能好像一样,但不是的,如果

select [referenceid] from [tbl_prj_metatypevaluepool] where [metatypestructonid]=b.id 条件返回的是null结果集的话

 

1号返回true, 而2号返回的是false.

 

 

 

 

 

分享到:
评论

相关推荐

    sql server2005 exists使用方法

    在 SQL Server 2005 中,`EXISTS` 是一个非常实用的子句,用于检查子查询是否返回至少一行数据。如果子查询返回至少一行数据,则 `EXISTS` 返回 TRUE;反之则返回 FALSE。`EXISTS` 子句通常用于提高查询性能,特别是...

    SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句.txt

    SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句.txt欢迎下载!

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

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

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

    **Exists** 和 **Not Exists** 子句通常用于检查子查询是否返回任何行,它们不会返回实际的数据,仅返回一个布尔值。 1. **Exists** - **语法结构**: ```sql SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2...

    sql case when exists not exists in not in

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

    sql exists和not exists用法

    这是因为`IN`和`NOT IN`需要将主查询中的每一行都与子查询结果进行比较,而`EXISTS`和`NOT EXISTS`则只需判断子查询是否返回至少一行数据即可,无需获取所有数据行。 **性能对比:** - **IN 和 NOT IN**:需要将主...

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

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

    基于sql server 2005的触发器的创建及操作

    在SQL Server 2005中,触发器是一种特殊的存储过程,它在特定的数据操作语言(DML)事件,如INSERT、UPDATE或DELETE发生时自动执行。触发器可以帮助实现复杂的业务规则和数据完整性,通过扩展SQL语句的功能,提供了...

    40集SQL Server 基础入门视频教程 SQL Server 数据库基础入门必备课程

    17.SQL Server 2014子查询IN.mp4 18.SQL Server 2014子查询EXISTS.mp4 19.SQL Server 2014返回记录排序.mp4 2.SQL Server 2014硬件和软件要求.mp4 20.SQL Server 2014关联查询.mp4 21.SQL Server 2014聚合函数...

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

    在子查询中,NOT IN子句将执行一个内部的排序和合并,无论在哪种情况下,NOT IN都是最低效的(因为它对子查询中的表执行了一个全表遍历)。为了避免使用NOT IN,我们可以把它改写成外连接(Outer Joins)或NOT ...

    SqlServer2005编程宝典

    通过上述代码示例,我们可以看到Sql Server 2005中如何创建和管理数据库、构建表格以及添加各种约束来确保数据的完整性和一致性。这对于日常开发和维护数据库系统非常重要。此外,文档还提供了关于如何在创建表格时...

    sqlserver exists,not exists的用法

    在SQL Server中,`EXISTS` 和 `NOT EXISTS` 是两个非常重要的子查询操作符,它们用于检查子查询是否返回任何行。理解这两个操作符的用法对于编写高效的查询至关重要。 1. `EXISTS` 操作符: `EXISTS` 用于测试子...

    一次SQL Tuning引出来的not in , not exists 语句的N种写法2

    `not exists`通常被认为在性能上优于`not in`,因为它在找到一个不匹配的记录后就会停止,而无需检查所有可能的匹配项。 SQL Tuning过程中,通常建议使用`not exists`,尤其是在存在关联或者子查询涉及到多表时,其...

    sqlserver 2005 高级应用 总结

    Sql Server 2005 是一个功能强大且广泛应用的关系数据库管理系统,它提供了许多高级应用功能,使得开发者能够更好地管理和维护数据库。本文总结了Sql Server 2005 的一些高级应用知识点,包括数据库对象、数据类型、...

    SQLServer 优化SQL语句 in 和not in的替代方案

    例如,在备份数据的场景中,假设我们有一个`Info`表和一个`bakInfo`表,我们想要将`Info`表中不存在于`bakInfo`表中的记录插入到`bakInfo`,传统的`NOT IN`操作可能如下: ```sql INSERT INTO bakInfo(id, PName, ...

    sqlserver的存储过程与 where in 多值参数

    在SQL Server中,存储过程是预编译的SQL语句集合,它们封装了特定的数据库操作,提高了代码的重用性和执行效率。当涉及到处理多个值时,我们常常会遇到如何将这些值作为参数传递给存储过程的问题。本文将探讨在SQL ...

    SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句2.txt

    SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句2.txt,欢迎下载!

    ORACLE和SQL Server的语法区别

    ### ORACLE和SQL Server的语法区别 #### 一、概述 本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,重点在于Transact-SQL(T-SQL)与PL/SQL之间的区别,并提供了一些迁移策略。对于希望将现有的Oracle...

Global site tag (gtag.js) - Google Analytics