oracle union 和 union all

java.sql.SQLSyntaxErrorException: ORA-01789: 查询块具有不正确的结果列数

原因: 发现是sql语句用union时的 两个语句查询的字段不一致

解决:将 2个 union 的sql语句,select的列,改为一样的字段。

UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复   union 是取唯一值,记录没有重复   1、UNION 的语法如下:     [SQL 语句 1]      UNION     [SQL 语句 2]

2、UNION ALL 的语法如下:     [SQL 语句 1]      UNION ALL     [SQL 语句 2]

效率:UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。

2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。

简要回答:UNION去重且排序

UNION ALL不去重不排序

原文地址:https://www.cnblogs.com/moonsoft/p/11686096.html

时间: 2024-10-13 14:35:05

oracle union 和 union all的相关文章

Oracle中 union 和 union all 的区别

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字. union(或称为联合)的作用是将多个结果合并在一起显示出来. union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复. Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All:对两个结果集进行并集操作,包括重复行,不进行排序: Intersec

oracle中union和union all区别与性能分析

[ 概要 ] 经常写sql的同学可能会用到union和union all这两个关键词, 可能你知道使用它们可以将两个查询的结果集进行合并, 那么二者有什么区别呢? 下面我们就简单的分析下. [ 比较 ] union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序; union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复; 下面我们举一个简单的例子来证明上面的结论: 1. 准备数据: drop table

Oracle中Union与Union All的区别(适用多个数据库)

Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来 Union 与 Union ALL 的作用都是合并 SELECT 的查询结果集,那么它们有什么不同呢? Union 将查询到的结果集合并后进行重查,将其中相同的行去除.缺点:效率低: 而Union ALL 则只是合并查询的结果集,并不重新查询,效率高,

【ORACLE】 两个order by的SQL使用 UNION 或者 UNION ALL 报错 ORA-00933:sql命令未正确结束

在oracle sql中,要求order by是select语句的最后一个语句,而且一个select语句中只允许出现一个order by语句,而且order by必须位于整个select语句的最后. union操作实际上做了两部分动作:结果集合并 + 排序, union all只进行结果集简单合并,不做排序,效率比union高 . 例子: 表一:table1  查询语句 : select  * from table1 t1  order by t1. c1  ;         表二:table

Oracle中的Union和Union All的区别

[举例] 一.创建A.B两张表,为了方便理解,两张表都只创建一个字段列,分别是a_col和b_col,添加A表 数据1.4.5.9,添加B表数据2.3.4.5. 二.输入如下语句:select * from A union select * from B; 结果:1.4.5.9.2.3.(去除了重复行) 输入如下语句:select * from A union all select * from B; 结果:1.4.5.9.2.3.4.5. (未去除重复行) [结论] Union:对两个结果集进

oracle --union和union all

当我们需要将两个select语句的结果作为一个整体显示时,就需要使用到union或者union all关键字. union的作用是将多个结果合并在一起显示出来. union和uinon all的区别是:union会对结果集中的重复结果去重,而union all则会将所有的结果全部显示出来. union:对两个(或多个)结果集进行并集操作,不包括重复行,同时进行默认规则的排序. union all:对两个结果集进行并集操作,包括重复行,不进行排序. 可以在最后一个结果集中指定order by子句改

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 ); insert into student values(1,'Aaron',78); insert into student val

union和union all的区别

Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All  两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并在一起显示出来. union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管

sql中Union和union all的使用

该文转载自:http://www.cnblogs.com/chaobaojun/archive/2009/12/24/1631508.html 在MS-SQL如果将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行,常用的方法如下: 一.       使用union 或union All语句 1.   union 与 union all语句的区别 ?         UNION 组合多个表(或结果集)并将其作为单个结果集返回; ?         UNION ALL