mssql sqlserver in和exists子查询用法对比简介


摘要:
下文讲述in和exists子查询的用法,如下所示:
实验环境:sql server 2008 R2


下文讲述in和exists关键使用子查询。
在sqlserver中如果我们使用in、ANY、ALL生成的子查询,我们都可以转换为exists子查询进行使用,
但是exists子查询比in子查询具有更强大的功能。

in子查询使用简介

in子查询的语法格式:
select [列1],[列2]…
from tableName
where [列] in (子查询)

select [列1],[列2]…
from tableName
where [列] not in (子查询)



exists子查询使用简介

exists语法如下:
select [列1],[列2]…
from tableName
where exists (子查询)

select [列1],[列2]…
from tableName
where not exists (子查询)



exists子查询不返回任何数据库,如果子查询存在行数据,则返回true
否则返回false代表where条件不成立,
exists中子查询应该是一个包含搜索条件的查询,只需判断是否有行信息返回,
所有exists子查询中出现 select * select 1 select 0 select null 都是等效
————————–

in 子查询一次只能对一列等值操作,
而exists子查询可以同时对主表的多列进行比对操作(like 大于 小于 等等比较运算符)

相关阅读:
mssql sqlserver 数据表存在null导致not in 子查询异常记录