现在的位置: 首页 > 综合 > 正文

EXCEPT 和 INTERSECT

2012年10月20日 ⁄ 综合 ⁄ 共 947字 ⁄ 字号 评论关闭
 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'

抱歉!评论已关闭.