玩转GaussDB中的SET操作符

  关系数据库中提供了一个关于集合的运算符SET操作符,其中包括以下操作:
  
  ●UNION/UNIONALL并集
  
  ●INTERSECT交集
  
  ●MINUS差集
  

一、操作符讲解

  
  1、UNION
  
  合并两个查询结果集,隐式DINSTINCT,删除重复行(即取集合并集)
  
  –合并两个提取表/派生表(derivedtable),返回结果为:[a,b,c,d,e]

SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
UNION
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)

  2、EXCEPT/MINUS
  
  返回出现在第一个结果集但不出现在第二个结果集中的所有行(即两集合相减)
  
  –返回结果为:[e]

SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
EXCEPT
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)

  3、INTERSECT
  
  返回第一个查询结果集和第二个查询结果集共有的部分(即取集合交集)
  
  –返回结果为:[a,b,c]

SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘e’)) Table1 (FC)
INTERSECT
SELECT FC FROM (VALUES(‘a’),(‘b’),(‘c’),(‘d’)) Table2 (FC)

二、集合运算的使用场景

  
  1、使用UNION代替Where子句中的OR,查询速度更快
  
  2、使用EXCEPT和INTERSECT,过滤出列表中不存在/存在于数据库

你可能感兴趣的:(gaussdb)