mssql sql server where 中exists in 用法举例


摘要:
下文讲述where子句中,in exists用法举例



in exists 功能简介:

in exists:查询数据存在于表中的关键字
in exists:查询效率上 exists效率高于in 关键字

—————-

in exists 举例应用:

例:

 CREATE TABLE #A(keyId INT,info NVARCHAR(50))
CREATE TABLE #B(keyId INT,keyId_A INT,info1 NVARCHAR(50),info2 NVARCHAR(50))

INSERT INTO #A(keyId,info)VALUES(1,N'test1'),(2,N'test2'),(3,N'test3') 

INSERT INTO #B(keyId,keyId_A,info1,info2)
VALUES  (1,1, N'测试B',N'测试B扩展'),(5,1, N'测试B_2',N'测试B_2扩展'),(6,13,N'测试B_3',N'测试B_3扩展')

/*查询A表中keyId 再B表 keyId_A列中的值,
   我们可以分别采用一下两种方式获取:
   1 exists
   2 in 
   */
   ----exists---
   SELECT * FROM #A a
    WHERE EXISTS(SELECT * FROM #B WHERE a.keyId = #B.keyId_A)
    /*
    exists 括号中跟一个bool值,只要 括号中存在值,select 就会返回当前行
      所以以下sql脚本等同于以上脚本信息
       SELECT * FROM #A a
       WHERE EXISTS(SELECT null FROM #B WHERE a.keyId = #B.keyId_A)
    可以使用系列语句达到返回所有行记录
       select * from #A a 
       where exists(select null)
    */ 
   ----in
   SELECT * FROM #A
    WHERE keyId IN (SELECT keyId_A FROM #B)
   
   go
   
   truncate table #A
   drop table #A
   
   truncate table #B
   drop table #B
   go