EXCEPT 和 INTERSECT

  EXCEPT 从左查询中返回右查询没有找到的所有非重复值。

INTERSECT 返回 INTERSECT 操作数左右两边的两个查询都返回的所有非重复值。

以下是将使用 EXCEPT 或 INTERSECT 的两个查询的结果集组合起来的基本规则:

·   所有查询中的列数和列的顺序必须相同。

·   数据类型必须兼容。


Examples:

CREATE   TABLE  projectPerson
(
personId 
VARCHAR ( 10 ),
projectId 
VARCHAR ( 10 ),
PRIMARY   KEY  (personId, projectId)
)
go
INSERT   INTO  projectPerson  VALUES  ( ' joeb ' , ' projBig ' )
INSERT   INTO  projectPerson  VALUES  ( ' joeb ' , ' projLittle ' )
INSERT   INTO  projectPerson  VALUES  ( ' fredf ' , ' projBig ' )
INSERT   INTO  projectPerson  VALUES  ( ' homerr ' , ' projLittle ' )
INSERT   INTO  projectPerson  VALUES  ( ' stevegr ' , ' projBig ' )
INSERT   INTO  projectPerson  VALUES  ( ' stevegr ' , ' projLittle ' )
go

我们要找出负责projBig,但不负责projLittle的那些人员,我们可以用下面的sql语句:

SELECT  personId
FROM  projectPerson
WHERE  projectId  =   ' projLittle '
EXCEPT
SELECT  personId
FROM  projectPerson
WHERE  projectId  =   ' projBig '
我们要找出既负责projBig,又负责projLittle的那些人员,我们可以用下面的sql语句:
SELECT  personId
FROM  projectPerson
WHERE  projectId  =   ' projBig '
INTERSECT
SELECT  personId
FROM  projectPerson
WHERE  projectId  =   ' projLittle '

你可能感兴趣的:(intersect)