专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
阿里云大数据AI平台  ·  【5月重点功能发布】阿里云大数据+ AI ... ·  3 小时前  
阿里云大数据AI平台  ·  【5月重点功能发布】阿里云大数据+ AI ... ·  3 小时前  
数据分析与开发  ·  突发!Anthropic 断供 ... ·  6 小时前  
数据中心运维管理  ·  施耐德电气PowerLogic™ ... ·  2 天前  
数据中心运维管理  ·  6月1日起实施!我国首部绿色数据中心评价国标 ... ·  2 天前  
数据中心运维管理  ·  应急预案和应急演练到底怎么做? ·  2 天前  
51好读  ›  专栏  ›  数据分析与开发

公司新来一个技术总监:谁再在 SQL 中写 in 和 not in,直接走人!

数据分析与开发  · 公众号  · 数据库  · 2024-04-04 11:50

主要观点总结

文章主要讨论了IN和NOT IN这两个关键字在数据库查询中的使用问题及替代方案。作者提到了使用IN和NOT IN可能导致的效率低、易出错和查询结果有误的问题。

关键观点总结

关键观点1: IN和NOT IN在大数据量查询时效率低

作者通过实际例子展示了使用IN和NOT IN进行大数据量查询时,效率较低。使用NOT EXISTS替代NOT IN后,查询效率有明显提升。

关键观点2: IN和NOT IN易出错

作者通过两个具体的建表查询例子,说明了使用IN和NOT IN时可能出现的问题。如不小心将id2写成id1,不会报错,但结果可能不符合预期。

关键观点3: IN和NOT IN在特定情况下可能返回错误结果

当数据库中存在空值(NULL)时,使用IN和NOT IN可能会返回错误的结果。作者建议在建表时最好不要允许含空值,以避免问题。

关键观点4: 替代方案

文章提供了使用EXISTS、NOT EXISTS和JOIN替代IN和NOT IN的方案。这些替代方案可以提高查询效率和准确性。


正文

请到「今天看啥」查看全文


* from t1
where not EXISTS ( select phone from t2 where t1.phone =t2.phone)

2、容易出现问题,或查询结果有误 (不能更严重的缺点

以 IN 为例。建两个表:test1 和 test2

create table test1 (id1 int)
create table test2 (id2 int)

insert into test1 (id1) values (1),(2),(3)
insert into test2 (id2) values (1),(2)

我想要查询,在test2中存在的  test1中的id 。使用IN的一般写法是:

select id1 from test1
where id1 in (select id2 from test2)

结果是:

OK 木有问题!







请到「今天看啥」查看全文