1.in查询的子条件返回结果必须只有一个字段,例如:
select * from student where name in (select name from user)
exist查询的子条件返回结果可以有多列,例子:
select * from student where name exist (select name,age from user)
当A表数据(外表)大于子查询数据得时候 建议用 in。 外表索引占主要作用
select * from A where name in (select name from user)
当A表数据(外表)小于子查询数据得时候,建议用 exist。弥补外表索引缺陷问题。
select * from A where name in (select name, age from user)
因为:in 相当于SQL中得多个or 条件去匹配 ,exist是for 循环得形式 去比较条件。如果匹配上,条件成立则执行。