exists

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 条件成立。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值