exists用法
SELECT
t2.*FROM
NCAQ.T_SECURITY_FILE t2WHEREEXISTS(SELECT
t.FILE_IDFROM
NCAQ.T_READ_CASE tWHERE
t2.IID= t.FILE_IDAND t.NAME='胡忆思')AND t2.REC_STATUS='0'
exists的用法与in作用相同但是用法稍微有些区别:
1、exists是紧跟着外部表where的,外部表与内部表相连结的条件写在内部表的where中;
2、in是在where后面直接加上值的范围的,例如:
SELECT
t2.*FROM
NCAQ.T_SECURITY_FILE t2WHERE t2.idin(...)
,并且in后面跟着取值的范围条件;
3、当子查询(内部表)数据量比外部表大时,exists的效率要优于in;
4、select * from A where id in(select id from B)
结论:in()适合B表比A表数据小的情况
5、select a.* from A a where exists(select 1 from B b where a.id=b.id)
结论:exists()适合B表比A表数据大的情况