1.exists();
exists(select * from t1 where t1.字段=值)
是否存在指定条件的记录.如果后面的SQL语句有选择到资料,则exists()函数返回true,否则返回false. 用两个简单案例来说明“exists”和“in”的效率问题 (1)select * from t1 where exists(select 1 from t2 where t1.a=t2.a); t1数据量小而t2数据量非常大时,t1<<t2时,(1)的查询效率高。 (2)select * from t1 where t1.a in (select t2.a from t2); t1数据量非常大而t2数据量小时,t1>>t2是,(2)的查询效率高。 exists用法: 请注意:(1)语句中有颜色字体的部分,理解其含义; 其中“select 1 from t2 where t1.a=t2.a”相当于一个关联表查询,相当于“select 1 from t1,t2 where t1.a=t2.a”但是,如果你当当执行(1)句括号的语句,是会报语法错误的,这也是简单使用exists需要注意的地方。 “exists(XXX)”就表示括号里的语句能不能查询出记录,它要查的记录是否存在。 因此“select 1”这里的“1”其实无关紧要的,换成“*”也没有问题,它只在乎括号里的数据能不能查找出来,是否存在这样的记录,如果存在,这 (1)句的where 条件成立。