Oracle中的Union、Union All、Intersect、Minus

EPLAN 设备接线图模板制作 属性摆放 设备连接图设置(选项 - - 设置) 连接图生成 阅读详情

众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。

  假设我们有一个表Student,包括以下字段与数据:

  drop table student;

  create table student

  (

  id int primary key,

  name nvarchar2(50) not null,

  score number not null

  );

  insert into student values(1,'Aaron',78);

  insert into student values(2,'Bill',76);

  insert into student values(3,'Cindy',89);

  insert into student values(4,'Damon',90);

  insert into student values(5,'Ella',73);

  insert into student values(6,'Frado',61);

  insert into student values(7,'Gill',99);

  insert into student values(8,'Hellen',56);

  insert into student values(9,'Ivan',93);

  insert into student values(10,'Jay',90);

  commit;

  Union和Union All的区别。

  select *

  from student

  where id < 4

  union

  select *

  from student

  where id > 2 and id < 6

  结果将是

  1    Aaron    78

  2    Bill    76

  3    Cindy    89

  4    Damon    90

  5    Ella    73

  如果换成Union All连接两个结果集,则返回结果是:

  1    Aaron    78

  2    Bill    76

  3    Cindy    89

  3    Cindy    89

  4    Damon    90

  5    Ella    73

  可以看到,Union和Union All的区别之一在于对重复结果的处理。

  接下来我们将两个子查询的顺序调整一下,改为

  --Union

  select *

  from student

  where id > 2 and id < 6

  union

  select *

  from student

  where id < 4

  看看执行结果是否和你期望的一致?

  --Union All

  select *

  from student

  where id > 2 and id < 6

  union all

  select *

  from student

  where id < 4

  那么这个呢?

 

据此我们可知,区别之二在于对排序的处理。Union All将按照关联的次序组织数据,而Union将进行依据一定规则进行排序。那么这个规则是?我们换个查询方式看看:

  select score,id,name

  from student

  where id > 2 and id < 6

  union

  select score,id,name

  from student

  where id < 4

  结果如下:

  73    5    Ella

  76    2    Bill

  78    1    Aaron

  89    3    Cindy

  90    4    Damon

  和我们预料的一致:将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序,那么结果集将按照id优先进行排序;而现在新的字段顺序也改变了查询结果的排序。并且,是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询:

  select score,id,name

  from student

  where id > 2

  union

  select score,id,name

  from student

  where id < 4

  结果如下:

  56    8    Hellen

  61    6    Frado

  73    5    Ella

  76    2    Bill

  78    1    Aaron

  89    3    Cindy

  90    4    Damon

  90    10    Jay

  93    9    Ivan

  99    7    Gill

  可以看到,对于score相同的记录,将按照下一个字段id进行排序。如果我们想自行控制排序,是不是用order by指定就可以了呢?答案是肯定的,不过在写法上有需要注意的地方:

  select score,id,name

  from student

  where id > 2 and id < 7

  union

  select score,id,name

  from student

  where id < 4

  union

  select score,id,name

  from student

  where id > 8

  order by id desc

  order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All、Intersect、Minus都有效。

  注意:

  1,Union可以对字段名不同但数据类型相同的结果集进行合并;

  2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。

  =================================================================================================================

  Intersect和Minus的操作和Union基本一致,这里一起总结一下:

  Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

  Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

  Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

  Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

  可以在最后一个结果集中指定Order by子句改变排序方式。

5 分钟上手 Kimi Work:安装、配置、跑通第一个任务 这篇文章提供了Kimi Work的快速入门指南,帮助用户在5分钟内完成从安装到运行第一个任务的全过程。主要内容包括: 安装步骤: macOS用户下载.dmg文件并拖入Applications Windows用户下载.exe安装包,需注意中文路径问题 初始设置: 使用现有Kimi账号登录 检查任务配额和文件访问权限 首个任务推荐: 建议从简单的本地文件整理开始(如按类型分类桌面文件) 详细说明了任务执行流程和审批机制 常见问题: 计划生成卡顿的解决方法 文件无变化的排查步骤 进阶建议: 提供难度递增的后续任务 阅读详情

相关推荐

浅谈车载控制器产线EOL实现方式

1、控制器生产产线上电路检测设计 2、客户总装产线检测设计

u012406840的博客 2万+

Oracle中的Union、Union All、Intersect、Minus的使用

众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。 假设我们有一个表Student,包括以下字段与数据: drop table student; create table student ( id int primary key, name nvarchar2(50) not null, score number not null ); inse

Frist_huangsuli的专栏 749

QT插件学习系列(一) 初识QtPlugin

QT插件学习系列(一) 初识QtPlugin 1、 概述 为什么我们要学习插件化,其和 windows 导出 dll 有什么区别呢? 导出的动态库如果缺失,程序不能运行。但插件可以。 同一套代码,即可分别在 windows 下和 linux 下生成插件。 QT 本身提供两种插件支持,一种称为高级 API,一种称为低级 API。 高级API的作用是扩展 QT 程序本身,需要子类化 QT 提供的插件基类,例如现有的 QTSqlDriver,因此你可也以编写自己的 QTStyle 扩展 QT。 低级

L_Andy的专栏 3113

ARTS Share9 Oracle中的Union、Union All、Intersect、Minus

这篇文章说一个关于ORACLE中的UNION、UNION ALL、INTERSECT、MINUS的解释和用法: 先创建一张TABLE,用来做实验: 建表语句如下所示: create table student ( id int primary key, name nvarchar2(50) not null, score number not null ); insert into studen...

墨笙弘一 330

小白学电路之cadance搭建buffer电路

Buffer(缓冲器)是一种放大器或驱动电路,主要用于隔离输入和输出,以防止负载对前级电路造成干扰或影响。本文作者在电路方面是小白水平,目前正在学习,有不足之处欢迎指正。3.创建新的cellview,对此buffer进行仿真验证。2.创建buffer的symbol。电路中的V2的详细参数。

weixin_58051657的博客 1984

YOLOv8魔改网络后训练全零?别慌,关掉AMP混合精度训练试试

本文探讨了YOLOv8魔改网络后训练出现全零指标的问题,指出AMP混合精度训练与自定义网络结构的不兼容性。通过分析梯度消失现象和AMP工作原理,提供了关闭AMP、调整学习率等解决方案,并建议预防性开发实践以避免类似问题。

weixin_28338005的博客 321

Oracle中的Union、Union All、Intersect、Minus[转]

众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。 假设我们有一个表Student,包括以下字段与数据: drop table student; create table student ( id int primary key, name nvarchar2(50) not null, score number not null ); i...

abc123098098的博客 100

【StarRocks】-- DATETIME 与 TIMESTAMP 区别详解

本文详细解析了StarRocks中DATETIME/DATETIMEV2与TIMESTAMP的区别及使用场景。DATETIME系列存储人类可读时间,不携带时区;TIMESTAMP实际指Unix时间戳,建议用BIGINT存储。关键差异包括:精度选择(DATETIMEV2支持微秒级)、时区处理(仅函数计算时影响)、存储方式等。针对不同场景提供选型建议:单时区展示用DATETIMEV2,跨时区计算用BIGINT存储Epoch。特别强调与MySQL迁移时的注意事项,并给出常见问题解决方案和最佳实践清单,包括统一入口

欢迎来到我的博客,一起探索代码里的世界! 498

Oracle中的Union、Union All、Intersect、Minus 排序

众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。 假设我们有一个表Student,包括以下字段与数据: drop table student; create table student ( id int primary key, name nvarchar2(50) not null, score number not null );

CHBOS的专栏 5046

2024年11月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(一)

软考高级考试包含三个科目:信息系统综合知识、系统架构设计案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午综合知识科目的选择题,同时附带参考答案、解析和所涉知识点。由于机考时题目顺序是打乱的,本文题目所标序号只为区分不代表实际顺序。综合知识。

一几文的编程学习笔记。 9278

第一篇:APS智能排产理论核心与求解器选型指南

本文系统解析了APS(高级计划与排程)系统的核心功能与技术实现。APS作为融合生产计划与排程的智能决策系统,通过运筹优化算法实现全局最优,平衡交付与效率。重点探讨了混合整数线性规划(MILP)在APS中的应用,包括设备分配、生产批量和人员班次优化等场景,并分析了其局限性与其他算法(如启发式算法)的互补性。文章还提供了APS实施策略建议和优化建模技巧,强调从简单模型开始迭代验证的重要性。最后介绍了甘特图在APS中的多维可视化作用,包括计划调整和决策支持功能。全文为理解APS系统原理及实践应用提供了全面指导。

算法工程师 544

Oracle 中的Union、Union All、Intersect、Minus

众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考。假设我们有一个表Student,包括以下字段与数据:drop table student;create table student(id int primary key,name nvarchar2(50) not null,score number not null);in

旺仔专栏 842

手把手教你学Simulink——基于Simulink的蚁群算法路径规划仿真建模示例

路径规划是机器人导航系统中的核心任务之一,旨在为机器人找到一条安全且高效的路径,使其能够从起点到达目标点,同时避免与障碍物发生碰撞。在开始之前,需要定义工作环境(例如地图),包括起点、终点以及可能存在的障碍物位置。通过本指南,我们介绍了如何基于Simulink结合MATLAB实现蚁群算法的路径规划仿真建模。

MHD0815的博客 222
上一篇: PLSQL小记(下)
下一篇: Informatica 中报: Fisrt Error Code 36401 及其解决办法
suncrafted
博客等级 码龄24年 103粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值