SQL 查询中 not in的改进,--not exists
表结构:
教师表:table1,字段有:id,name;
学生表:table2,字段有:id,name;
教师id=学生id,即为本校毕业的学生留校当老师,要求检索非本校毕业的老师
select id,name from table1 where id not in ( select id from table2)
这种查询的效率比较低,原因网上有很多论述,改为not exists就比较好
select id,name from table1 a where not exists ( select 1 from table2 where id=a.id)
亲测,对于数据量比较大的表,效果明显。
真实代码:
select level_id from td_level a where level_id not in(select level2_id from td_level2) --等价于 select level_id from td_level a where not exists (select 1 from td_level2 where level2_id=a.level_id)