查询集的集合操作
(moved)
按:目前的 Oracle 支持集合运算,但 mysql 还不支持。
集合论中,两个集合可以做如下运算:并(union), 交(intersect), 差(minus)。关系型数据库中的二维表作为记录的集合,也实现了这几个操作。但有一个重要的限制:参与运算的两个集合的记录的结构必须相同。这个限制换成更具体的表达是:参与运算的两个表,必须要有相同的表结构,即:
有相同数量的列
列名和类型也一致
并(union)
这个运算在具体的 RDBMS 的实现中,分成了 union / union all 两种,前者严格遵循集合的数学上的集合定义:无重复元素,后者允许重复元素。对这部分的并运算的描述,可以参本站的《查询中 OR, UNION 和 UNION ALL 的区别》一文。
交(intersect)
求两个集合的公共部分。也就是求两个表公用的部分。
差(minus)
求一个集合排除掉和另外一个集合共有的元素后,还剩下的元素的结果集。