exists和in的一些区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38500014/article/details/84565991

今天偶然用到exists,谈谈对exists的印象,在mysql中exists和in还是有一些区别的

例如1

select * FROM t_organ a WHERE organid=2   AND exists (select * FROM  t_organ a WHERE organid=999999)

上面的sql中,显然exists后面的子查询语句是查不到数据的,所以子查询返回false,则当前sql查询不到任何结果

select * FROM t_organ a WHERE organid=2   AND not exists (select * FROM  t_organ a WHERE organid=999999)

上面的sql中,显然exists后面的子查询语句是查不到数据的,所以子查询返回false,但是使用的not exists ,双重否定等于肯定,则当前sql可以查询到任何结果

总结1,exists 一般作为一个子查询条件,返回false或者true,然后返回给上一级进行判断是否返回数据,所以查询还是要看上一级的查询!!!!和in不同的是,in是通过条件判断,exists不能通过条件也不能通过某个字段!!!

in的用法比较简单,一般都是在大的结果集内查找包含条件的结果,这里就不多说了

猜你喜欢

转载自blog.csdn.net/weixin_38500014/article/details/84565991