数据库集合运算符是用于对多个查询结果集(通常来自同一表或不同表)进行集合操作的运算符,主要包括并集(UNION)、交集(INTERSECT)、差集(EXCEPT/MINUS)等。它们通过逻辑组合返回满足特定条件的数据行。
**1. 并集(UNION)**
合并两个查询的结果集(自动去重),要求列数和数据类型一致。
*示例*:查询部门A和部门B的所有员工(不重复)
```sql
SELECT name FROM employees WHERE dept = 'A'
UNION
SELECT name FROM employees WHERE dept = 'B';
```
**2. 交集(INTERSECT)**
返回同时存在于两个结果集中的数据行(需数据库支持,如PostgreSQL/Oracle)。
*示例*:找出同时在项目X和项目Y中的员工
```sql
SELECT emp_id FROM project_members WHERE project = 'X'
INTERSECT
SELECT emp_id FROM project_members WHERE project = 'Y';
```
**3. 差集(EXCEPT/MINUS)**
返回第一个结果集中存在但第二个结果集中不存在的行(MySQL不支持,可用LEFT JOIN替代)。
*示例*:列出在部门A但不在部门B的员工(标准SQL用EXCEPT,Oracle用MINUS)
```sql
SELECT name FROM employees WHERE dept = 'A'
EXCEPT
SELECT name FROM employees WHERE dept = 'B';
```
**腾讯云相关产品推荐**
- **TDSQL(分布式数据库)**:兼容MySQL/PostgreSQL语法,完整支持集合运算符,适合需要复杂查询的企业级应用。
- **云数据库SQL Server**:原生支持INTERSECT/EXCEPT,适用于Windows生态下的业务系统。
- **数据仓库TCHouse-D**:基于ClickHouse,可通过UNION ALL高效处理大规模集合运算(不去重场景)。... 展开详请