摘要:
下文讲述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