今天偶然用到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的用法比较简单,一般都是在大的结果集内查找包含条件的结果,这里就不多说了