一、IN 关键字
IN的一般使用方法:value [NOT] IN LIST,一般LIST为与value数据类型相同的一组数据。无[NOT]当LIST中存在与value相同的值时返回true,否则返回false;有[NOT]则相反
LIST 可以为确定的一列值,如:('ShangHai','NanJing','BeiJing'),
也可以是sql的查询结果,但是必须只有一个字段,这点显而易见。如果使用这种方法,就是一种子查询的实现方法了。
示例:查询人力资源部分来自'Berlin'或'Cambridge'这两个城市的职员的工号
1 USE AdventureWorks2014 2 SELECT [BusinessEntityID] 3 FROM [HumanResources].[Employee] 4 WHERE [BusinessEntityID] IN ( 5 SELECT [BusinessEntityID] 6 FROM [Person].[BusinessEntityAddress] 7 WHERE [AddressID] IN ( 8 SELECT [AddressID] 9 FROM [Person].[Address] 10 WHERE [City] IN ('Berlin','Cambridge') 11 ) 12 )
查询结果:
BusinessEntityID
1 284 2 288 3 289
二、EXISTS 关键字
EXISTS的一般用法:EXISITS (Subqueries)子查询有记录则返回真否则返回假
该语句可放在外查询的WHERE语句中,作为外查询的限制条件
示例:当存在病假时间大于60的职员时,查询该部门的平均病假时间
1 USE AdventureWorks2014 2 SELECT AVG([SickLeaveHours]) AS avg 3 FROM [HumanResources].[Employee] 4 WHERE EXISTS( 5 SELECT