举个例子:

如下图:

NOT IN 乱像(子查询建议使用 NOT EXISTS 代替 NOT IN)

A、B 表的数据如上图所示,

语句:

SELECT A.ID FROM A WHERE AID NOT IN (SELECT ID FROM B);

该语句的结果集,由于 B 表中空值(oracle:空字符串或者null;mysql:null值),将永远为空,无论 A 表的数据是什么样子。

有些时候,这可能与我们设想的逻辑不符。

建议自子查询的时候,尽量使用 not exists,既可以保证效率,又可以防止子查询中有空值(oracle:空字符串或者null;mysql:null值)

 

下面将介绍Mysql与Oracle的子查询中 使用 NOT IN 的区别

mysql结果如图:

NOT IN 乱像(子查询建议使用 NOT EXISTS 代替 NOT IN)

oracle如下图:

NOT IN 乱像(子查询建议使用 NOT EXISTS 代替 NOT IN)

 

 

 

 

 

 

相关文章:

  • 2022-01-31
  • 2021-11-12
  • 2021-11-23
  • 2021-08-16
  • 2021-06-06
  • 2022-12-23
  • 2022-12-23
  • 2018-02-07
猜你喜欢
  • 2021-11-03
  • 2022-12-23
  • 2021-10-01
  • 2022-12-23
  • 2022-12-23
  • 2021-05-21
  • 2022-12-23
相关资源
相似解决方案