oracle的minus
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的minus相关的知识,希望对你有一定的参考价值。
一楼没睡醒吧,minus咋跟union作用相反呢,取交集的是intersect。minus的作用简单来说是去同留异,例:select * from table where rownum<10minus 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表中不存在。
返回第一个表中有、第二个表中没有的数据
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的主要内容,如果未能解决你的问题,请参考以下文章
ORACLE 官方只可以下载oracle11g 版本的数据库 没有了ORACLE 10g 是否ORACLE 10g 过期了 不能在官方下载