oracle的minus

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的minus相关的知识,希望对你有一定的参考价值。

一楼没睡醒吧,minus咋跟union作用相反呢,取交集的是intersect。minus的作用简单来说是去同留异,例:select * from table where rownum<10
minus select * from table where rownum<5;
另外再补充一下rownum的用法:rownum也就是伪列,在创建表的时候自动有的,每个表都有伪列,做条件的时候有几个注意点:只能等于1,只能大于0,可以小于任何数
参考技术A

select meternum,dcu_code
from meter
where meternum in
(select meter.meternum from meter
minus
select aday_date.meternum from aday_date where data_time = '输入你想要的限制条件')

minus运算的主要功能是: 在进行两个表格或者两个查询结果的时候
, 
返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录。
比如A表中数据如下:
ID  NAME   ADDRESS   TEL
1    ABC    
AAAA        123456
2    ABD    
BBBB         123455
3    ABE    
CCCCC        111111
比如B表中数据如下:

http://www.yuandingit.com/products/ 
ID  NAME   ADDRESS   TEL
1    ABC     AAAC
      123456
2    ABD    
BBBB         123455
那么
(SELECT * FROM
A)
MINUS
(SELECT * FROM
B)
的结果是:
1    ABC    
AAAA        123456  
3    ABE    
CCCCC        111111
结果中的第一行数据是由于 A,B 表中的ADDRESS不相等。
结果中的第一行数据是由于 A表中的数据在B表中不存在。


参考技术B oracle的minus
返回第一个表中有、第二个表中没有的数据

CREATE TABLE union_tab_1 (
id INT,
val VARCHAR(10)
);

CREATE TABLE union_tab_2 (
id INT,
val VARCHAR(10)
);

INSERT INTO union_tab_1 VALUES(1, 'A');
INSERT INTO union_tab_1 VALUES(2, 'B');
INSERT INTO union_tab_1 VALUES(3, 'C');

INSERT INTO union_tab_2 VALUES(1, 'A');
INSERT INTO union_tab_2 VALUES(1, 'A');
INSERT INTO union_tab_2 VALUES(2, 'B');
INSERT INTO union_tab_2 VALUES(4, 'D');

SQL> SELECT * FROM union_tab_1
2 MINUS
3 SELECT * FROM union_tab_2;

ID VAL
---------- --------------------
3 C

SQL> SELECT * FROM union_tab_2
2 MINUS
3 SELECT * FROM union_tab_1;

ID VAL
---------- --------------------
4 D

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/1cec591300db9b13c83d6d0b.html

oracle 的交并差函数,intersect;union;minus。

创建表并添加数据:

--创建TABLE_A
create table TABLE_A  
(  
 A varchar2(10),  
 B varchar2(10)  
);
--给TABLE_A添加数据
insert into TABLE_A  values(a1,b1);  
insert into TABLE_A  values(a2,b2);  
insert into TABLE_A  values(a3,b3);  


--创建TABLE_B 
create table TABLE_B  
(  
 A varchar2(10),  
 B varchar2(10)  
);
--给TABLE_B添加数据
insert into TABLE_B  values(a1,b1);  
insert into TABLE_B  values(a2,b2);  
insert into TABLE_B  values(a4,b4);  
 

 

 

intersect:  返回查询结果中相同的部分(交集)。

SELECT A,B FROM TABLE_A 
INTERSECT     
SELECT A,B FROM TABLE_B;

--结果
A         B
------------
a1        b1
a2        b2

 

union,union all:  将查询的结果组合后返回, union会过滤重复,union all不过滤重复。

--  TABLE_A和TABLE_B会去除重复数据
SELECT A,B FROM TABLE_A
UNION  
SELECT A,B FROM TABLE_B;  

--结果
A         B
------------
a1        b1
a2        b2
a3        b3
a4        b4

--  TABLE_A和TABLE_B中的所有数据
SELECT A,B FROM TABLE_A 
UNION ALL   
SELECT A,B FROM TABLE_B; 

--结果
A         B
------------
a1        b1
a1        b1
a2        b2
a2        b2
a3        b3
a4        b4

 

minus:  返回在第一个查询结果中包含第二个查询结果中不包含的数据。

SELECT A,B FROM TABLE_A
MINUS  
SELECT A,B FROM TABLE_B;

--结果
A        B
-----------
a3       b3

 

以上是关于oracle的minus的主要内容,如果未能解决你的问题,请参考以下文章

linux 怎么查找oracle11g的安装目录

oracle的数据怎么发送到接口

什么是oracle的实例

oracle 是怎么收费的?

windows安装oracle76%卡了

ORACLE 官方只可以下载oracle11g 版本的数据库 没有了ORACLE 10g 是否ORACLE 10g 过期了 不能在官方下载