`
jslfl
  • 浏览: 321192 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SQL not in 疑惑

sql 
阅读更多
在sql查询中,
select *
from t1 
where c not in (select c2 from t2)

如果t2中有c2有null的话,这句话就有可能执行的结果为,
只有在子查询必须过滤掉NULL值才正常
select *
from t1 
where c not in (select c2 from t2 where c2 is not null)


搜索原因得知
SQL-92标准要求对空值的等于(=)或不等于(<>)比较取值为FALSE。当SET ANSI_NULLS为ON时,即使   column_name中存在空值,使用WHERE column_name = NULL的SELECT语句仍返回零行;即使column_name中存在非空值,使用WHERE column_name  <> NULL的SELECT语句仍返回零行。
当SET ANSI_NULLS为OFF时,等于(=)和不等于(<>)比较运算符不遵从SQL-92标准。使用WHERE column_name   =   NULL的SELECT语句返回column_name中含有空值的行。使用WHERE column_name <> NULL的SELECT语句返回列中含有非空值的行。此外,使用WHERE column_name <> XYZ_value的SELECT语句返回所有非XYZ值和非NULL的行。

也可用exists
分享到:
评论

相关推荐

    经典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 in,exists,not in,not exists区别

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

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

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

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

    在处理大量数据时,尤其需要注意避免使用效率较低的操作符,如`IN`和`NOT IN`。这些操作符虽然在编写时提供了简洁和易读性,但在执行效率上往往不如其他替代方法。本文将深入探讨`IN`和`NOT IN`的替代方案,并通过...

    SQL中in参数化的用法

    SQL 中 IN 参数化的用法详解 在 SQL 中,对于 IN 操作符的使用是非常常见的,特别是在 WHERE 子句中规定多个值时。如:select * from A where ID in (1,2,3,4)。但是在实际开发中,我们不可避免地需要处理大量的...

    SQL中对not in和not exist查询的替代算法.pdf

    "SQL中对not in和not exist查询的替代算法.pdf" 本文主要讨论了SQL中对not in和not exist查询的替代算法。首先,作者简要介绍了SQL语言的基本概念和特点,然后讨论了not in和not exist查询的低效性及其原因。接着,...

    10分钟学会SQL Sams Teach Yourself SQL in 10 Minutes

    Sams Teach Yourself SQL in 10 Minutes has established itself as the gold standard for introductory SQL books, offering a fast-paced accessible tutorial to the major themes and techniques involved in ...

    sql not in 与not exists使用中的细微差别

    上面两个简单的Sql,我们从表面理解,查询的最终结果应该是一样的,但实际结果却和我们想象的不一样 第一条sql查询的结果有一条数据 第二条sql查询的结果却为空  原因: not exists的子查询,对于子查询不返回行和...

    在64位机器上使用plSQL连接Oracle的问题(SQLNet not properly installed)

    标题中的“在64位机器上使用plSQL连接Oracle的问题(SQLNet not properly installed)”提示了我们在64位操作系统中尝试使用plSQL Developer工具与Oracle数据库建立连接时遇到的一个常见问题,即SQLNet配置不正确。SQL...

    SQLServer Execpt和not in 性能区别

    在SQL Server中,`EXCEPT` 和 `NOT IN` 是两个用于查询数据的子句,它们都可以用来找出在一个集合中但不在另一个集合中的数据。然而,它们在性能方面可能存在显著的差异,尤其是在处理大量数据时。本文将深入探讨这...

    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,欢迎下载!

    Sql Server参数化查询之where in和like实现详解

    Sql Server参数化查询之where in和like实现详解 在Sql Server中,参数化查询是提高查询性能和防止SQL注入攻击的有效方法之一。其中,where in和like是两个常用的查询条件,然而它们的参数化实现却不是那么简单。...

    Sql in split

    Sql in split Sql in split Sql in split Sql in split

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

    为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。 如 我要查询 Sendorder表中的冗余数据(没有和reg_person或worksite相连的数据) sql=”select Sendorder.id,Sendorder.reads,Send...

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

    本文将探讨在SQL Server中,存储过程与`WHERE IN`子句结合使用时,处理多值参数的几种方法。 **方法一:拼接SQL字符串并调用`EXEC`** 这是最简单也是最直观的方法。你可以在存储过程中接收一个包含多个值的参数,...

    SQL2000_4In1数据库.iso

    sql2000官方个人版.、企业版、开发版 四合一

    SqlUtils工具类,Sql IN 条件拼接工具类

    在实际使用中,`SqlUtils`可能还包含了其他辅助方法,比如处理`NOT IN`条件、动态构建`WHERE`子句等。这些方法通常会结合使用`StringBuilder`来构造SQL字符串,同时进行必要的边界条件检查,确保在空值或空集合时...

    SQL.in.a.Nutshell.3rd.Edition

    本书《SQL in a Nutshell, Third Edition》主要介绍了SQL语言的最新标准,即ANSI SQL2003(SQL3)版本,并详细记录了各个平台对SQL命令的实现。书中对关系型数据库管理系统(RDBMS)模型进行了简洁明了的解释,对...

Global site tag (gtag.js) - Google Analytics