
正文
Oracle两个表交集,oracle两个表取交集
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle 里面的intersect 是什么意思?
INTERSECT,取两个表中的交集。
举例如下:
1、创建测试表,
create table test_tbl_1(id varchar2(20));
create table test_tbl_2(id varchar2(20));
2、插入测试数据,部分值含回车换行符;
insert into test_tbl_1 values(1);
insert into test_tbl_1 values(2);
insert into test_tbl_1 values(3);
insert into test_tbl_1 values(4);
insert into test_tbl_2 values(3);
insert into test_tbl_2 values(2);
insert into test_tbl_2 values(5);
insert into test_tbl_2 values(6);
commit;
3、查询表中全量数据,可以发现部分值含回车换行符;select 1 as tbl, t.*, rowid from test_tbl_1 t union all select 2 as tbl, t.*, rowid from test_tbl_2 t;
4、编写语句,使用INTERSECT,获取两表的交集;
select * from test_tbl_1 INTERSECT select * from test_tbl_2;
相关问答
Q1: oracle中INTERSECT,MINUS的用法是什么?
INTERSECT取两个表的交集,即A中的数据也在B中存在。
ntersect 就是交集,minus 就是差集,交集就是两个结果集中都有的元素。
比如 select uid from tb1
intersect
select uid from tb2
那么既存在tb1 又存在tb2中 相同的UID 就会查出来
差集:select uid from tb1
minus
select uid from tb2
存在于tb1 但不存在与tb2中的uid 会被查出
Q2: oracle求两表的交集和差集,和oracle的intersect,minus不一样
肯定不一样
a表有三个b,B表有两个b,那么这些b之间有什么区别吗?明显没有,所以在minus时,系统会认为a表的三个b,和b表的任何一个b都是形同的。所以minus时出来的应该是ade三行。
同理,交集的时候出来的应该是三个b。
如果看不懂,那么就这么看,A表有10列数据,有两行(每行10列)内容完全一样。
B表有5行数据,每行十列,有一行与“某表”重复的两行一致。
现在如果求交集,A表重复的两行,和B表的这一行都是有交集的,那么怎么显示,怎么去判断,这两行中的哪一行与B表的那一行是交集,另外一个不是交集?
再没有特定标志的前提下,我们不能判断,所以我们只能说两行都是交集。补集的时候是一样的,A表这两行都与B表的这一行相同,那么怎么确定哪一行应该是交集,哪一行是补集?
这个和我们平时说的集合概念不一样,集合是不能出现重复的元素的,你这里有重复的元素(a表的三个b,B表的两个b),所以应该是多重集的概念。
当然真实的环境中,基本上不会出现多重集,因为数据本身就有互异性,两条相同的数据没有意义。当然不排除数据库设置不合理导致的这种情况发生,不过那只能说设计数据库的人好去好好的再学一学范式了。
Q3: Oracle查询2张表差集、交集、并集
select 字段1 from 表1 minus select 字段1 from 表2
select 字段1 from 表1 intersect select 字段1 from 表2
select 字段1 from 表1 union all select 字段1 from 表2
Q4: oracle有两张表,都有account字段,求该字段的交集。
select a.account from a,b where a.account =b.account
--------补充---------
select a.account from a,b where a.account =b.account and a.quota!='0' and b.type='0'
Q5: Oracle 求两个结果集的交集
CREATE TABLE a(id int ,name varchar(10))
INSERT a SELECT 1,'张三'
UNION ALL SELECT 2,'李四'
UNION ALL SELECT 3,'王五'
UNION ALL SELECT 4,'张明'
create table b(id int ,value varchar(10))
insert into b select 1,'张'
union all select 2,'李'
union all select 3,'汤'
select a.id,a.name from a,b where charindex(b.value,a.name) 0
关于Oracle两个表交集和oracle两个表取交集的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







