MySQL集合操作类型

SQL语言包含3个集合操作符(union、intersect、expect)以执行各种集合操作。
此外,每个集合操作符可以有两种修饰符:一个表是包含重复项,另一个表是去除重复项(但不一定时所有的重复项)。

union操作符

union与union all操作符可以连接多个数据集,它们的区别在于union对连接后的集合排序并去除重复项,而union all保留重复项。

使用union all 得到的最终数据集的行数总是等于所要连接的各集合的行数之和,该操作时最易于执行的集合操作(从服务端的观点看),因为服务器不需要检查重复的数据。例:

SELECT 'IND' type_cd, cust_id, lname name 
FROM individual
UNION ALL 
SELECT 'BUS' type_cd, cust_id, name 
FROM business;

如果需要连接后的表排除重复行,那么需要使用union操作符来替代union all:

SELECT emp_id
FROM employee
WHERE assigned_branch_id = 2
AND (title = 'Zifeiy' OR title = 'Zifeiy Wang')
UNION
SELECT DISTINCT open_emp_id
FROM account 
WHERE open_branch_id = 2;

intersect操作符

ANSI的SQL规范中定义了intersect操作符来执行集合交操作,但是MySQL6.0还没有支持,不过在Oracle或SQL Server 2008中可以使用它。

except操作符

ANSI SQL规范规定了except操作符以执行集合差操作,MySQL 6.0还未实现except操作符。

原文地址:https://www.cnblogs.com/zifeiy/p/8807243.html