sql server集合运算

在SQL Server中,集合运算指的是对两个或多个表(或结果集)进行操作,以产生一个新的结果集。主要的集合运算包括:

  1. UNION - 合并两个或多个查询的结果集,并自动去除重复的行。
  2. UNION ALL - 与UNION类似,但它不会去除重复的行。
  3. INTERSECT - 返回两个查询结果集共有的行。
  4. EXCEPT - 返回第一个查询结果集中有而第二个查询结果集中没有的行。

1 UNION

UNION运算符将两个或多个SELECT语句的结果集合并在一起,并自动去除重复的行。

SELECT EmployeeID, FirstName
FROM Employees
WHERE DepartmentID = 1
UNION
SELECT EmployeeID, FirstName
FROM Employees
WHERE DepartmentID = 2;

这个查询会返回DepartmentID为1或2的所有员工的EmployeeIDFirstName,且结果中没有重复行。

2 UNION ALL

UNION ALLUNION类似,但它不会去除结果集中的重复行。

SELECT column1, column2
FROM table1
WHERE condition
UNION ALL
SELECT column1, column2
FROM table2
WHERE condition;

3 INTERSECT

INTERSECT运算符返回两个查询结果集共有的行。

SELECT EmployeeID, FirstName
FROM Employees
WHERE DepartmentID = 1
INTERSECT
SELECT EmployeeID, FirstName
FROM Employees
WHERE Title = 'Manager';

这个查询会返回既在DepartmentID为1的部门工作,职位又是Manager的所有员工的EmployeeIDFirstName

4 EXCEPT

EXCEPT运算符返回第一个查询结果集中有而第二个查询结果集中没有的行。

SELECT EmployeeID, FirstName
FROM Employees
WHERE DepartmentID = 1
EXCEPT
SELECT EmployeeID, FirstName
FROM Employees
WHERE Title = 'Manager';

这个查询会返回DepartmentID为1的部门中所有不是Manager的员工的EmployeeIDFirstName

注意:

  • 所有参与UNIONUNION ALLINTERSECTEXCEPT运算的SELECT语句必须具有相同数量的列。
  • 对应的列必须具有兼容的数据类型,以便可以进行比较。
  • UNIONEXCEPT运算默认去除重复的行,而UNION ALL不会去除重复的行。
  • 集合运算通常不适用于INSERTUPDATEDELETE语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值