前言
exists
用于where
条件语句之后
,属于子查询的一种形式。
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据
,而是返回值True
或False
。
案例
查询指定表,如果满足exists条件时,查询所有记录数。
select count(*) from DM_PARA_CONFIG where exists(select 1 from dual where 1 = 1)
由于select 1 from dual where 1 = 1
为真,能够查询出数据信息,所以exists
条件为真
,则select * from DM_PARA_CONFIG
能够查询所有数据。
若不满足 exists
条件,则不会查询数据信息。
select count(*) from DM_PARA_CONFIG where exists(select 1 from dual where 2 = 1)
select 1 from dual where 2 = 1
查询结果不存在
,则exists
条件为false,那么前面的sql查询结果为0.
扩展
其次where exists
后的sql语句
,并不会因为查询返回数据为null
,导致前面的查询结果无的情况。
测试sql如下所示:
select count(*) from DM_PARA_CONFIG where exists(select null from dual where 1 = 1)
【注意:】exists 后的语句,只在乎是否为true,与返回数据无关!