首页 > 数据库 >SQL中使用not in 的坑

SQL中使用not in 的坑

时间:2024-04-22 15:56:56浏览次数:24  
标签:SQL 使用 1110 sql NULL WHERE id select

本文实验环境为MarinaDB,即MySQL开源版本
先看一下这个sql

SELECT * 
FROM table  WHERE id IN (NULL) ;

在表记录所有列都有值的情况下显然都是查不出的,那把in 改成not in是不是就能反过来查出所有记录呢?

SELECT * 
FROM table  WHERE id not IN (NULL) ;

然而结果还是一条都查不出来,按照字面理解,id不为NULL,不是所有记录都满足这个条件吗
为了搞清原因我们试验一下以下三条sql

select '1'='1110'
select '1110'='1110'
select '1110'!=NULL



0为否1为是,以上2条sql的结果符合我们的直观预知,但第三条则不一样了

结果为NULL,我们再实验以下以下两条sql,结果也都为NULL

select NULL!=NULL
select NULL=NULL

说明涉及到NULL的sql判断,一概为未知,也就是否,这也就解释了为什么 WHERE id not IN (NULL) 没有任何一条记录符合,所以我们在日常使用中,需要保证条件list中没有NULL元素

标签:SQL,使用,1110,sql,NULL,WHERE,id,select
From: https://www.cnblogs.com/CodeSpike/p/18150769

相关文章

  • SQL注入之字符型和数字型注入
    SQL注入之数字型注入和字符性注入:数字型注入:不需要闭合字符型注入:需要闭合如何判断属于那种注入?1、用减法判断:利用id=2-1如果返回的是id=1的结果,则是数字注入,否则是字符注入2、用and1=1和and1=2来判断,两者都能正常回显则是字符型注入,否则是数字型注入如何判断字符型......
  • ONVIF Device Test Tool使用方法
    ONVIF(OpenNetworkVideoInterfaceForum)是一个开放的、全球性的论坛,旨在开发一个全球性的开放接口标准,以推动网络视频产品之间的互操作性。ONVIFDeviceTestTool则是用于测试设备是否符合ONVIF标准的工具,它对于设备制造商、集成商以及最终用户都至关重要。本文将详细介绍ONVI......
  • mysql添加数据报错
    1452-Cannotaddorupdateachildrow:aforeignkeyconstraintfails('db_student_manager_web'.'s_student',CONSTRAINT'student_clazz_id_foreign'FOREIGNKEY('clazz_id)REFERENCES's_clazz'('id')......
  • 使用pipenv后,如何在pycharm中添加解释器
    问题:我用pyenv安装的python3.10,执行pyenvwhichpython3.10显示:/Users/hxjs/.pyenv/versions/3.10.0/bin/python3.10那系统级别的python解释器路径就是:/Users/hxjs/.pyenv/versions/3.10.0/bin/python3.10我在项目下,使用pipenv--python3.10给项目安装了python3.10,并使用pi......
  • MySQL精选60道面试题 ( 含答案 )
    2024的4月招聘季如此卷,没点真本事真技术,没点面试经验,不了解点职场套路,如何过五关斩六将?找工作最重要的一步自然是面试,马上跳槽季,网上出现了各种面试题,一时会让人眼花缭乱,分不清最该看哪个。虽然不提倡背答案,但是该看的面试题还是得看,这里给大家总结了一些MySQL的通用面试题,不管......
  • postgresql重置序列和自增主键
    1.问题背景数据表中插入了几条测试数据,后又手动删除,导致后面插入数据的时候报主键冲突:ERROR:duplicatekeyvalueviolatesuniqueconstraint"tableName_pkey"DETAIL:Key(id)=(1)alreadyexists.12即使采用INSERTIGNORE的方式或者REPLACEINTO的方式还是报错,所以就想......
  • 时序数据库IoTDB的安装与使用
    ApacheIoTDB(物联网数据库)是一体化收集、存储、管理与分析物联网时序数据的软件系统。ApacheIoTDB采用轻量式架构,具有高性能和丰富的功能,并与ApacheHadoop、Spark和Flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。装环境安装......
  • sqlmap简单使用方法
    基本格式sqlmap-u"http://www.vuln.cn/post.php?id=1"默认使用level1检测全部数据库类型sqlmap-u"http://www.vuln.cn/post.php?id=1" --dbmsmysql--level3指定数据库类型为mysql,级别为3(共5级,级别越高,检测越全面)cookie注入当程序有防get注入的时候,可以使用cookie注......
  • redis 安装使用
    下载地址https://download.redis.io/releases/解压tarzxvfredis-7.0.15.tar.gz-C/usr/local/编译redis:cd/usr/local/redis-7.0.15/make编译完成后会在目录下生成生成一个src的目录安装redis:cdsrc/makeinstallPREFIX=/usr/local/redis安装完成。移动配......
  • 【DataBase】Hsqldb的简单使用
    【DataBase】Hsqldb的简单使用 介绍HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有Server模式,每个程序需要不同的命令来运行。HyperSQL数据库(HSQLDB)是一种现代关系数据库系统。版本2.4.1是全新版本2......