oracle 里面的intersect 是什么意思?

oracle 里面的intersect 是什么意思?
最新回答
夏迟归

2022-12-22 01:41:44

在Oracle数据库中,"INTERSECT"是一个用于查询操作的逻辑运算符,其功能是找出两个表中共享的行,即交集。具体来说,当你在一个SQL查询中同时使用"INTERSECT",它会返回那些在两个给定表中都存在的记录,其他不匹配的行将被忽略。下面是一个直观的例子来解释这一概念:

首先,创建两个测试表,test_tbl_1和test_tbl_2,分别用于存储id数据:

create table test_tbl_1(id varchar2(20));


create table test_tbl_2(id varchar2(20));



接着,我们插入一些数据,包括包含回车和换行符的值:

insert into test_tbl_1 values('1');


insert into test_tbl_1 values('2');


... (其他值)


insert into test_tbl_2 values('3');


insert into test_tbl_2 values('2');


... (其他值)



执行全量数据查询时,可以注意到部分值的特殊字符:

select 1 as tbl, t.*, rowid from test_tbl_1 t union all select 2 as tbl, t.*, rowid from test_tbl_2 t;



最后,当我们用"INTERSECT"来查询两表的交集时,SQL语句如下:

select * from test_tbl_1 INTERSECT select * from test_tbl_2;



这个查询将返回test_tbl_1和test_tbl_2中id值相同的行,忽略不同或仅存在于其中一个表中的数据。这就是"INTERSECT"在Oracle中的实际应用。