全部产品
云市场

UNION、INTERSECT和EXCEPT

更新时间:2019-07-02 21:22:34

UNIONINTERSECTEXCEPT用于将多个查询结果集进行组合,从而得到一个最终结果。

语法

  1. query
  2. { UNION [ ALL ] | INTERSECT | EXCEPT | MINUS }
  3. query

参数

  • UNION:返回两个查询表达式的集合运算。

  • UNION ALLALL关键字用于保留UNION中产生的重复行。

  • INTERSECT:返回只有在两个集合中同时出现的行,返回结果将删除两个集合中的重复行。

  • EXCEPT| MINUS:先删除两个集合中重复的数据行,返回只在第一个集合中出现并且不在第二个集合中出现的所有行。MINUSEXCEPT作用相同。

计算顺序

  • UNIONEXCEPT集合运算符为左关联,如果未使用圆括号来改变计算顺序,则按照从左到右的顺序进行集合运算。

    例如,以下查询中,首先计算T1T2UNION,然后对UNION结果执行EXCEPT操作。

    1. select * from t1
    2. union
    3. select * from t2
    4. except
    5. select * from t3
    6. order by c1;
  • 在同一查询中,组合使用集合运算符时,INTERSECT运算符优先于UNIONEXCEPT运算符。

    例如,以下查询先计算T2T3的交集,然后将计算得到的结果与T1进行并集。

    1. select * from t1
    2. union
    3. select * from t2
    4. intersect
    5. select * from t3
    6. order by c1;
  • 可以使用圆括号改变集合运算符的计算顺序。

    以下示例中,将T1T2的并集结果与T3执行交集运算。

    1. (select * from t1
    2. union
    3. select * from t2)
    4. intersect
    5. (select * from t3)
    6. order by c1;