exists 和 select 1 from



EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False

 

EXISTS


指定一个子查询,检测行的存在。

语法


EXISTS subquery

参数

subquery

是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。有关更多信息,请参见select中有关子查询的讨论。

结果类型


Boolean

结果值


如果子查询包含行,则返回 TRUE。


一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。exists引导的子句有结果集返回,那么exists这个条件就算成立了,


http://www.cnblogs.com/fredlau/articles/993829.html

http://www.cnblogs.com/mytechblog/articles/2105785.html

http://blog.csdn.net/xiwu1616/article/details/14160855/


<span style="font-size:14px;"> Insert into DGDISTRIBUTOR (DGDISTRIBUTORID,ORGCODE,ORGNAME,USERID,DATELASTUPDATED) 
 select DGDISTRIBUTORseq.nextval,'52004096','丹东市第二人民医院',100005690,sysdate from DGDISTRIBUTOR
 where ROWNUM<=1 and not exists (select * from DGDISTRIBUTOR where orgcode = '52004096')</span>

1、select 1 from mytable;与select anycol(目的表集合中的任意一行) from mytable;与select * from mytable 作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。

2、查看记录条数可以用select count(1) from mytable;等价于select count(*) from mytable;


select * from organization where 1=1 and exists(select 1 from organization where orgid >1999999)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值