exists:用法:select * from table1 where exists (select * from table2 where table1.id = table2.id )
返回table1中和table2中id相同的记录(双重循环)结果和in语法一样,思想不一样,
in:select * from table1 where id in (select id from table2 )
2者思路不一样:exists:先获得每一条table1的数据,然后获得id字段,去table2表内查找对应值,找到说明符合条件
in:先获得所以的id可能性,再检索table2数据时,判断当前的id是否在id集合内
对于in:如果table2中数据量太大,不使用,因为他要先把这么多数据找出来并存储,开销大,可以用exists
原文:http://www.cnblogs.com/hhfhmf/p/4827571.html