首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这个使用NOT IN的简单查询出了什么问题?

这个使用NOT IN的简单查询出了问题,可能是因为在使用NOT IN进行子查询时,子查询的结果集中包含了NULL值。在SQL查询中,NULL值会导致NOT IN查询的行为出现异常。

例如,假设我们有一个表格A,其中包含两个字段:id和name。我们想要查询表格B中所有不在表格A中的记录,可以使用以下查询语句:

代码语言:txt
复制
SELECT * FROM B WHERE id NOT IN (SELECT id FROM A);

但是,如果表格A中的id字段包含了NULL值,那么这个查询语句将会返回空结果集,因为NULL值不会被包含在NOT IN的条件中。

为了解决这个问题,可以使用LEFT JOIN或者NOT EXISTS来代替NOT IN进行查询。例如,使用LEFT JOIN的查询语句如下:

代码语言:txt
复制
SELECT B.* FROM B LEFT JOIN A ON B.id = A.id WHERE A.id IS NULL;

使用NOT EXISTS的查询语句如下:

代码语言:txt
复制
SELECT * FROM B WHERE NOT EXISTS (SELECT 1 FROM A WHERE B.id = A.id);

这两种查询方式可以避免NULL值对查询结果的影响,并且可以正确地返回表格B中不在表格A中的记录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

快速理解为啥这个查询使用索引,那个查询使用索引,学会了才发现:真tm简单

优化器经过调查得知,需要扫描二级索引记录占总记录条数比例是3/16,它觉得这个查询使用二级索引来执行比较靠谱,所以在执行计划中就显示使用这个idx_key1来执行查询: ?...优化器经过调查得知,需要扫描二级索引记录占总记录条数比例是13/16,跟显然这个比例已经非常大了,所以优化器决定使用全表扫描方式来执行查询: ?...这还不简单,让表中符合IS NOT NULL条件记录少不就行了,我们可以执行一下: UPDATE t SET key1 = NULL WHERE key1 < 80; 这样再去执行这个查询: SELECT...优化器经过调查得知,需要扫描二级索引记录占总记录条数比例是3/16,它觉得这个查询使用二级索引来执行比较靠谱,所以在执行计划中就显示使用这个idx_key1来执行查询: ? !...优化器经过调查得知,需要扫描二级索引记录占总记录条数比例是2/16,它觉得这个查询使用二级索引来执行比较靠谱,所以在执行计划中就显示使用这个idx_key1来执行查询: ? 且慢!

59210

我们软件出了什么问题------《敏捷软件开发:原则、模式与实践》(一)

第一篇 软件设计存在问题 我们知道,系统设计,是存在于头脑中衣服至关重要图像。 即使我们在一开始设计阶段,就非常清晰了解了需求,甚至于在发布时候,依然清楚。...但是在接下来,随着不断使用,弊端、不足会一一被暴露出来。系统变得越来越难以维护,最后,即使仅仅进行最简单更改,也需要花费巨大努力。...笔者提出了一下观点:当软件出现了下面任何一种气味时,就表明软件正在腐化: 1、僵化性:很难对系统进行改动。因为牵扯到其他太多部分改动。...4、粘滞性:做正确事比做错误事要困难。 两种表现形式:软件粘滞性和环境粘滞性 面临一个改动时,开发人员发现,有一些方法会保持设计,但是实施起来困难,另一些方法会破坏设计,但是实施起来相对简单。...而我们希望是,可以更容易地进行哪些保持设计变动。 5、不必要复杂性:设计中包含有不具任何直接好处基础结构。 6、不必要重复:设计中包含有重复结构,而该结构本可以使用单一抽象进行统一。

75480

这个简单小技巧,可能n倍提升查询编辑效率! | PQ优化

很多朋友都会遇到一个问题:当处理数据比较多时,每添加一个查询步骤,都要等很久。...其实,很多时候,我们并不需要在查询编辑过程中每次看全部数据,所以,解决这个效率问题,很简单,学会一个小技巧即可。...既然数据量很大影响效率,而我们在编辑查询时候又不需要全部数据,那么,我们完全可以在进行各种数据处理(查询编辑)前,加一个步骤,仅保留少量数据: 比如,仅(按个人喜欢)保留10行: 这样,后面每个步骤处理...最后查询编辑工作搞完,再把这个“保留行”步骤删除即可: 当然,这个方法毕竟在处理过程中剔除了大量数据,所以,在进行数据分组或者跨表合并等操作时,可能会出现一些中间结果不全,或合并数据得到空值情况...此外,这种处理方式,也可能会隐藏掉一些查询步骤本身数据处理效率就很低问题,比如,某些步骤使用了大数据量时不应该使用方法……注意在进行全量数据刷新效率较低时进行检查和优化。

62820

【学术】试试这个!研究人员设计出了更好推荐算法

本周,在神经信息处理系统会议上,他们报告说, 他们已经使用他们框架来构建一个新推荐算法,应该比现在使用推荐算法更好,特别是当评级数据“稀疏”时——也就是说, 在审查产品和不同客户分配评级之间...该算法基本策略很简单:当试图预测顾客对某一产品评价时,不仅要使用相似品味的人评分,而且要使用与这些人相似的人评分等等。 这个想法很直观,但在实践中,一切都取决于具体相似性度量。...或者换句话说,当你从一个朋友喜好转移到朋友朋友时,这个过程中引入了什么噪音,是否有一个正确方法来量化这种噪音,这样我们就能平衡我们所引入噪音所带来信号。...“当我们对一部电影进行采样时,我们实际上并不知道它功能是什么,所以如果我们想准确预测这个功能,我们将无法做到,”Lee说。“但如果我们只是想估算用户功能之间差异,我们则可以计算出这个差异。”...卡内基梅隆大学(Carnegie Mellon University)亨氏公共政策和信息系统学院助理教授乔治•陈(George Chen)表示:“他们展示算法简单、直观、优雅。”

75750

为了解决这个 RTT 过长问题,我祭出了大招!

正常 RTT 在几十 ms 左右,所以 3s 这个时延肯定不正常,于是着手排查,由于每个接口都可能超过 3s,所以下文皆以登录接口分析为例,因为登录接口逻辑相对比较简单。 排查思路 1....看下请求是否依然缓慢,这里我两个方法都试了,用 Safari 也重现了 RTT 大于 3s 情况,并且我用 curl 在终端请求也发现了 RTT 大于 3s 情况,如何使用 curl 请求呢,这里提醒一下...,以及各个方法调用时间 这里我们要用到它最后一项功能,实时查看各个方法调用时间,整个使用 arthas 步骤如下 1、 首先我们要先下载一下 arthas,如下 curl -O https://...trace 执行结果(MVC 服务执行时间 80ms 左右)与前端请求有 1/3 概率超过 3s 结论告诉了运维,让他们排查一下从反向代理层到站点层这中间是否有啥问题,不一会儿果然查出了问题。...1/3 概率打到这台下线机器 ip 上,由于这个 ip 对应机器无法响应这个请求,等到超时后,kongfu 会重试把这个请求打到另外正常两台机器中任意一台,也就是说请求 3s 中大部分时间花在了等待那台不正常

1.3K40

将视频压缩到最小,使用这个方法很简单

视频文件太大的话在传输过程中会很浪费时间,遇到这种情况我们可以直接将视频先进行压缩,很多小伙伴可能都不知道压缩方法,下面给大家讲解一个视频压缩技巧,希望可以帮助到大家!...首图.png   操作步骤:   一.打开工具,选择压缩类型   首先打开安装好工具,选择压缩类型视频压缩; 1.png   二.添加文件   1.选择好压缩类型后,在跳转页面中,通过添加文件...,我们需要对视频相关选项进行设置;如:压缩设置和输出格式等; 3.png   四.保存路径设置   视频相关设置完成之后,在工具下方,可对视频文件保存路径进行设置,这样可以更加方便找到压缩后文件...,可以查看压缩前后大小   压缩前大小为:1019.90kb   压缩后大小为:797.06kb 6.png   今天分享到这里就结束了,方法步骤阐述很详细,相信认真阅读小伙伴都看命阿碧了吧...,动手试试吧,在绘制过程中遇到不明白可以直接在留言框中进行留言哦!

3K50

原 pg查询简单解读

log) 表:create  table  aa(a int,b int); 数据:insert into aa values (0,1),(1,0),(1,1); 执行查询语句...nParamExec 0    } STATEMENT:  select * from aa where ((4-3)/a>1 and a>0); 经过查看,对一个查询操作如下...(在此以上述sql语句为例分析,只是针对where后语句),这是解析时生成结构(重写为对其进行更改): (4 - 3) / a > 1...,其中首先是进行了操作符优先级解析,gram里解析): 首先,这里都是二叉树结构,以深度优先进行遍历,其中根节点是and(location:34),两个子节点分别是(a>0) 和...当执行时,首先进行是39节点操作(a>0),而后进行是26节点操作(4-3),再进行29节点操作(26,30节点"/"操作),再进行31节点操作, 然后在对39,40两个节点进行

1.1K130

实验3.1 简单单表查询

一、实验目的 熟练掌握用SELECT语句实现简单单表查询。掌握SELECT子句、FROM子句、WHERE子句及ORDER BY 子句用法。 二、实验原理 用SELECT语句实现简单单表查询。...在SELECT子句中用TOP关键字来限制返回到结果集中记录数目,用DISTINCT关键字从结果集中去掉重复记录。...WHERE子句中用关系比较符、[NOT] BETWEEN、[NOT]  IN、LIKE、 IS [NOT]NULL及逻辑运算符构成查询条件,对结果集中记录进行筛选。...ORDER BY子句将根据查询结果集中一个或多个字段对查询结果进行排序。 三、实验设备 安装有SQL SERVER 2000计算机。...like '刘%' 2.查找所有定单金额高于20000所有客户编号 select cust_id from sales where tot_amt>20000;  3.查找业务部或会计部女员工基本信息

1.3K20

一道简单又不简单sql查询语句

抛砖引玉 无意间在简书上浏览时候看到一篇写数据库查询练习题,其实也好无奈,大数据啊大数据,自从看了几天有关编程和程序员方面的文章,首页推荐内容都是关于这样技术贴,太那啥了,想看点小故事小情感类文章都要自己搜...今天没有小故事,可能会比较枯燥(毕竟数据库嘛) 题目是:查询和" 01 "号同学学习课程 完全相同其他同学信息 先看两个表,然后我梳理了一下知识要点,最后大家就可以解题啦(当然并不一定要用这个解法...,有兴趣可以在下方留言你查询sql语句) 数据库表 学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别...知识点 CONCAT(str1,str2) 这里用到了mysqlconcat函数,concat(str1,str2),连接参数产生字符串。...[Order BY ASC/DESC 排序字段] [Separator '分隔符']) 例如查询学生表: mysql> select group_concat(Sname) from Student

57540

组长指出了使用react常犯错误

背景 年底了,换了项目组,新项目组使用react,从vue到react,我只花了一天时间,看了官方简单文章之后,就觉得这玩意很简单啊,比起vue那么api来说,这根本没有学习成本好吧,十分迅速就进入了...react项目开发,并且洋洋得意,根据我多年经验来看,这波肯定会得到领导赏识 很快,我就做完了我需求,把代码提交上去,组长可能确实比较闲,还review了我代码,并且指出了一系列问题,并告诉我说学习...,提交时候从state上再把数据取到,这一点确实很像vue双向绑定,通过state方式实现了,看着表面没有问题,并且页面也呈现了,submit数据也取到了 但是实际上,我们并没有在别的地方使用这个...name状态,除了在提交时候,有人会说,value也用到了,但是实际上你是可以不需要value这个字段,只有提交时候才会用到这个数据,所以这里完全可以不使用state,防止组件刷新 只需要通过ref...,但实际上useEffect中回调会执行多次,因为person是个引用类型,每次指针地址都是变化 这个时候你可以使用useMemo来解决这个问题 const person = useMemo(()

84630

基础SQL-DQL语句-SELECT查询简单使用以及IFNULL函数

基础SQL-DQL语句-SELECT查询简单使用以及IFNULL函数 分类 描述 关键字 DQL(Data Query Language)数据查询语言 (掌握) DQL语言并不是属于MYSQL官方分类...,但是对数据库操作最多就是查询,所以我们程序员把查询语句语句称作为DQL语言 SELECT 等 查询不会对数据库中数据进行修改.只是一种显示数据方式 1....简单查询 备用数据: ----------------运行下面的sql语句,生成相关数据库表 # 创建商品表: CREATE TABLE product( pid INT, pname VARCHAR...select 字段名1 as 别名,字段名2 别名 from 表名 as 表别名; as关键字可以省去不写 -- 需求3.别名查询.使用关键字是as(as可以省略). -- 3.1表别名:查询商品名称和价格...如果想要计算,此时就需要使用 IFNULL 函数,判断当查询值为 NULL,可以设置为 0 ,操作如下: select 列名1 + 固定值 from 表名; -- 需求:将所有商品价格+10元进行显示

1.4K10

增删改查查之简单查询

导读 软件测试人员在工作使用SQL语言中查询使用得最多,而查询也是SQL语言中最复杂,很多测试人员只使用到其中最简单查询 1.数据库使用 现在在任何项目中都有数据存在,那么在测试过程中查看数据库中数据是必不可少步骤...软件测试人员在执行测试时使用最多语句就是查询(SELECT)语句,而SELECT语句也是SQL语言中相当复杂语句,它包含单表查询,连接查询,嵌套查询,集合查询等各种复杂不同数据库查询。...2.单表查询 单表查询是SELECT语句中最简单查询语句。 select语句格式: SELECT [ALL|DISTINCT] {*|table1....name),班级(class),年龄(age)) 课程(course)表(课程名(c_name),课程号(cno)) 分数(score)表(学号(xuehao),课程号scno,分数(score)) 1.最简单查询子句...FROM class -> WHERE name LIKE '王%'; 注意:LIKE----好像 一般与通配符搭配使用: %---一个或多个字符串 _---一个字符 9.查询出class表中姓名为王开头

1.8K30

出了Linux 故障找不到方法?看大牛简单、朴实解决思路

——查阅日志文件:有时候报错信息只是给出了问题表面现象,要想更深入了解问题,必须查看相应日志文件,而日志文件又分为系统日志文件(/var/log)和应用日志文件,结合这两个日志文件,一般就能定位问题所在...——分析、定位问题:这个过程是比较复杂,根据报错信息,结合日志文件,同时还要考虑其它相关情况,最终找到引起问题原因。 ——解决问题:找到了问题出现原因,解决问题就是很简单事情了。...这个策略本身没有什么问题,但是通过检查发现这台服务器系统分区中并没有单独划分/tmp分区,这样/tmp下数据其实占用根分区空间,既然找到了问题,那么删除/tmp目录下一些占用空间较大数据文件即可...,导致虽然删除了access_Ilog文件,但是由于进程锁定,文件对应指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放。...,但是为什么提示这样错误呢 解决思路,这个案例涉及ulimit命令使用使用ulimit时,有以下几种使用方法: 1、 在用户环境变量中加入 如果用户使用是bash,那么可以在用户目录环境变量文件

2.3K70

为了治好拖延症,我祭出了这个自虐项目,把我搞卧槽卧槽

为了改头换面重新做人,在某个夜深风高夜晚,我扛着我小锄头,挖出了我压箱底宝贝,轻轻掸去了一层浮灰... ?...GitHub 网址: https://github.com/maebert/themostdangerouswritingapp 这个项目设计宗旨是让我们进入丝滑状态,作者 Manu Ebert 小哥在某个周日下午怼了两杯葡萄酒...建议女孩子,当男朋友惹你生气时,先让他在这上面写一篇万字检讨书,写不完不许睡觉那种... ? 顺便来看看其他用过这个项目自虐老哥们怎么说吧... ? 怎么样,是不是想尝试一波?...在这个网站上,还可以设置你创作时间和词汇数,也就是制定一个小目标,你只要在目标内完成任务,那么你写东西就不会被删掉... ?...再多说一句,可能看到这有些同学觉得这个项目有点华而不实,可能用这样那样方法,比如我一直随便敲键盘也可以过关,但是记住你要用这个去做是什么,是短时间集中注意力进入写作状态,发现优点在我看来永远只比盯着缺陷来重要

65610

mybatis嵌套查询使用

大家好,又见面了,我是你们朋友全栈君 在使用mybatis时,当我们遇到表与表之之间存在关联时候,就可以使用嵌套查询 比如说 当一个对象包含了另一个对象 /** * 公交实体类中包含了司机信息和路线信息...String topenString; private String tcloseString; //省略封装方法 } 当一个对象中包含了另外一个对象时,在resultMap中就可以使用嵌套查询...resultMap之后就可以了,执行查询之后就会自己会调用子查询(注意:子查询其实也是对应一个查询语句,也要有相应结果集)。...附上一个查询结果debug 从图中也是可以看出Bus中Way对象是有数据,并且Way中泛型集合stations也是有数据,这是因为子查询结果集也配置了嵌套查询,所以相对于嵌套了两次...~ 如果使用多个嵌套需要额外注意,在多对多情况下,切勿嵌套死循环了,不然就尴尬了~233 需要嵌套对象还是集合就根据自己需求来了,注意单个对象是association、集合是collection

2.1K20
领券