`

一个 "NOT IN" 引发的错误

阅读更多

     前几天用到 “NOT IN” 用做条件过滤时,发现少了部分数据,后来仔细查看数据时发现将查询字段为 NULL 状态的记录忽略掉了。记录下来,以备日后总结。

 

     实例如下:

1. 数据库users表中存在如下记录:

 

2. 查询 email 不为 “aa@test.com” 的记录:

SELECT * FROM users WHERE email NOT IN ('aa@test.com');

 发现查询结果如下:

3. 以上查询方式是错误的,应该照顾到email字段为NULL的状态情况。

SELECT * FROM users WHERE (email IS NULL OR email NOT IN ('aa@test.com'));

 查询结果如下:

 ok了!

 

  • 大小: 5.6 KB
  • 大小: 3.4 KB
  • 大小: 4.6 KB
1
2
分享到:
评论

相关推荐

    CCS4.2编译错误提示及修改方法

    如果多个地方添加同一个头文件也会出现“identifier"EMIF_GBLCTL_EKEN_ENABLE"类似的错误。 CCS4.2 编译错误提示及修改方法可以帮助开发者快速解决编译错误问题,提高开发效率。但是,需要注意的是,在使用 CCS4.2 ...

    kernel panic - not syncing : fatal exception

    ### Kernel Panic - Not...通过上述步骤,用户不仅解决了眼前的启动问题,也为我们提供了一个宝贵的经验:在面对难以解决的技术难题时,耐心地观察错误信息中的线索,并尝试不同的方法,往往能带来意想不到的解决方案。

    虚拟机黑屏end kernel panic - not syncing两种解决方式.docx

    在虚拟机环境中,有时会遇到一个令人困扰的问题,即虚拟机启动后屏幕变黑,并显示“end kernel panic - not syncing”的错误信息。这个错误通常表示Linux内核遇到了严重的问题,导致系统无法正常运行。在本文中,...

    C语言的错误小集 C语言的错误

    如果缺少其中一个或两个,将会引发错误。 #### 18. 类型修饰符冲突(Conflicting type modifiers) 在一个类型声明中同时使用了相互冲突的修饰符,例如同时声明一个变量为 `signed` 和 `unsigned`。 #### 19. ...

    C语言编程错误信息表

    在深入探讨《C语言编程错误信息表》时,我们面对的是C语言编程中常见的陷阱与挑战,这份详尽的错误信息列表为开发者提供了一个全面的视角,帮助他们在编写代码时避免或快速解决遇到的问题。以下是对该表中部分关键...

    vc编程系列之[1886411956]How Not to Program in C++

    C++的模板是一个强大的工具,但滥用或不恰当使用也会导致代码膨胀和编译时间过长。理解模板的实例化和元编程的基本原理,以及何时使用非类型模板参数和模板特化,可以有效地利用模板的优势,同时避免潜在的问题。 ...

    C语言编译错误信息锦集

    当尝试创建一个大小超出编译器允许范围的数组时,会引发此错误。检查数组大小是否合理,并根据实际情况调整数组大小。 #### Assembler statement too long (汇编指令过长) 当一条汇编指令包含的内容超过了编译器...

    在虚拟机中启动系统后,出现Operating_System_not_found解决方法

    - **重建虚拟机**:如果已存在减号等特殊字符,建议删除当前虚拟机并重新创建一个新虚拟机,确保名称符合要求。 - **验证设置**:重新启动虚拟机,检查是否解决了“Operating System not found”的问题。 #### 四、...

    MySQL异常:[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nona…

    在MySQL中,错误提示 "[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column…” 指的是在执行包含`GROUP BY`子句的查询时,你试图对未在`GROUP BY`子句中...

    C语言错误解释和总结

    - **Pointer being freed was not allocated**: 正在释放的指针未被分配,试图释放一个未通过`malloc`等函数分配的指针。 - **Redeclaration of 'xxx'**: “xxx”重复声明,同一作用域内不应有同名的声明。 - **...

    Delphi编译错误信息简明手册

    3. **'<name>' is not a type identifier**:当你尝试使用一个未声明的名称作为类型标识符时,会出现这个错误。确保你已经正确地定义了类型或者引用了已存在的类型。 4. **'<name>' not previously declared as a ...

    C与C++常见错误中英文对照

    当编译器尝试包含一个不存在的头文件时会出现此错误。可能是因为文件名拼写错误、文件路径不正确或文件本身不存在。检查头文件路径和文件名,确保它们正确无误。 ### 4. fatal error C1903: unable to recover from...

    sql2000附加数据库错误602解决方式

    3. **系统元数据不一致**:如错误消息所提示的,当`sysindexes`表中的元数据与实际数据库中的数据不匹配时,也会引发错误602。 #### 解决方案 ### 方案一:数据库版本转换 如果问题是由于数据库版本不兼容造成的...

    TC_2.0编译错误大全.doc

    2. **'xxxxxx' not an argument**:如果一个标识符被定义为函数参数,但在函数调用中未出现,这会引发错误。检查函数定义和调用的一致性。 3. **Ambiguous symbol 'xxxxxx'**:当有多个同名但类型或偏移不同的结构域...

    最常见的20种VC++编错误信息.doc

    在`switch`语句中,`case`标签需要一个常量表达式作为分支条件,如果此处出现变量或其他非常量表达式,则会引发此错误。解决策略是确保`case`后的值是编译时可确定的常量。 #### 6. error C2065: 'IDD_MYDIALOG': ...

    Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法

    接着,当我们尝试通过`for`循环遍历`flag`和`val`时,就会引发错误,因为`None`不是可迭代的对象。 #### 解决方法 为了避免此类错误的发生,可以采取以下几种策略: 1. **检查返回值**: - 在调用可能返回`None`...

    oracle常见错误号

    5. ORA-00904:"OBJECTID": invalid identifier - 提供了一个不存在或格式不正确的列名或对象名。检查拼写和大小写,确保引用的对象真实存在。 6. ORA-00904:invalid column name - 类似于上述错误,需要检查列名...

    oracle错误编码一览

    例如,试图在一个只读模式下的对象上执行修改操作。解决方案包括检查对象的当前模式,并确保所执行的操作与该模式兼容。 ### ORA-00026: Invalid object ID 无效的对象ID错误通常出现在引用不存在或已被删除的对象...

    Delphi编译错误中文手册

    当您试图定义一个抽象方法时,如果没有将其标记为virtual或dynamic,则会引发此错误。抽象方法是在接口或抽象类中声明但未实现的方法,它们必须由派生类实现。为了正确声明抽象方法,请确保使用virtual或dynamic...

    kell常见错误提示.

    **错误描述**:当赋值操作的目标不是一个有效的变量时会发生此错误。 **解决方法**: - 确认所有赋值操作的目标都是有效的变量。 - 避免尝试向不可变的对象赋值。 #### 44. error44: Field identifier expected ...

Global site tag (gtag.js) - Google Analytics