OracleSET运算符

SET操作符可以将多个查询组合成一个新的查询。在使用SET操作符时,特别需要注意的是查询的两个集合字段要互相对应,即数量和数据类型要相互对应。SET操作符有UNION、UNION ALL、INTERSECT、MINUS。查询出来的结果默认排序顺序是升序排序,可以用ORDER BY改变排序方式,而且ORDER BY语句只能出现在最后。

NUMONE表与NUMTWO表:

一、UNION(并集、去重复)

UNION 操作符返回两个查询结果集的并集,对于两个结果集重复的部分会去除。

由上面的全表查询可以知道NUMONE表中有五条数据,NUMTWO表中有六条数据,这两个表经过UNION操作符求并集然后去重复之后返回的结果是9条,也就是说这两个表中存在两条相同的数据(1,2和1,4)。

二、UNION ALL(并集、不去重)

UNION ALL 操作符返回两个查询结果集的并集,对于两个结果集重复的部分不会去除。

UNION ALL 操作符返回的是两个表的并集且不会去除重复的数据,所以返回的数据中是含有重复数据的。条数为NUMONE表中的5条数据加上NUMTWO表中的6条数据,即11条数据。

三、INTERSECT(交集)

INTERSECT 操作符返回两个查询结果集的交集。

INTERSECT 操作符返回的是两个查询结果集的交集,也就是返回这两个查询结果中重复的数据,这两条数据与UNION操作符去除掉的数据是一样的,因为UNION操作符去除的就是重复数据。

四、MINUS(差集)

MINUS操作符返回两个查询结果集的差集。

MINUS操作符返回在第一个集合中存在且在第二个集合中不存在的数据,所以返回的结果是第一个查询结果集减去两个查询结果集中重复的数据。

五、多个SET操作符

SET操作符中并不仅限于只能用一个操作符来对结果集进行处理,可以同时使用多个相同的操作符或者不同的操作符

左图用两个INTERSECT来对这三个查询结果集求交集,右图用MINUS和INTERSECT来对这三个查询结果集求差集之后再求交集。这两种写法都是可行无误的,至于具体要用哪种来操作查询结果集就要根据查询所需要的结果来使用。

六、ORDER BY(排序)

在SET操作符中有个需要注意的地方是排序,在不写ORDER BY子句的情况下,系统的默认排序方式是结果集的第一列的升序排序。如果要改变排序方式就要加上ORDER BY子句,ORDER BY子句只能在语句的最后出现。

这里ORDER BY子句后面的2是根据结果集的第几列来进行排序,2就是第二列,不写排序方式默认的是升序排序。

(0)

相关推荐

  • 数据库并集union、交集intersect、差集except

    (1)所有查询中的列数和列的顺序必须相同. (2)比较的两个查询结果集中的列数据类型可以不同但必须兼容. (3)比较的两个查询结果集中不能包含不可比较的数据类型(xml.text.ntext.imag ...

  • C语言基础丨运算符之条件运算符(七)

    条件运算符(conditional operator)有时候也称为三元运算符(ternary operator,或者trinary operator),因为它是唯一需要 3 个操作数的运算符,条件表达 ...

  • C语言基础丨运算符之位运算符(六)

    对于更多紧凑的数据,C 程序可以用独立的位或多个组合在一起的位来存储信息.文件访问许可就是一个常见的应用案例.位运算符允许对一个字节或更大的数据单位中独立的位做处理:可以清除.设定,或者倒置任何位或多 ...

  • 浅谈JS运算符&&和|| 及其优先级

    今天看了一段YUI compressor压缩的js代码: userNum && (ind += index,ind >= userNum && (ind -= u ...

  • R语言 运算符

    运算符是一个符号,通知编译器执行特定的数学或逻辑操作. R语言具有丰富的内置运算符,并提供以下类型的运算符. 运算符的类型 R语言中拥有如下几种运算符类型: 算术运算符 关系运算符 逻辑运算符 赋值运 ...

  • 引用运算符及HYPERLINK函数进阶

    经常有人问我,超链接函数,可不可以连接多个单元格,能不能把满足条件的单元格一起连接起来,点击一下就全部选中? 答案:肯定是可以!但是有亿点点难度,看到最后你就应该明白我说的有亿点点难度了! 但是想要实 ...

  • Python运算符分为哪些?这几类最常见!

    说起Python运算符,相信很多人都听说过,但对它的了解并不是很多,甚至不知道它有哪些分类,接下来跟着小编一起来看看吧. Python中运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等. 运算 ...

  • Java运算符及包机制

    算术运算符:+-*/%++-- 赋值运算符:=,+=,-=,*=,/= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑运算符:&&,|| ...

  • [基础语法]-第004节:运算符

    表达式:(a + b) * c a,b,c叫做操作数 +,*,叫做运算符 一.运算符 1.1 算术运算符 + - * / %(求余) ++ -- 1.2 关系运算符 == != > < & ...

  • C/C++编程知识:运算符(七)丨三元/三目运算符知识详解

    预测以下C ++程序的输出. #include <iostream> using namespace std; int main() { int test = 0; cout <&l ...