当前位置: 代码迷 >> J2EE >> 两个表关联的条件不是一对一的关系是一对多或多对多的关系可以用exists和not exists,该怎么处理
  详细解决方案

两个表关联的条件不是一对一的关系是一对多或多对多的关系可以用exists和not exists,该怎么处理

热度:576   发布时间:2016-04-17 23:21:17.0
两个表关联的条件不是一对一的关系是一对多或多对多的关系可以用exists和not exists
两个表关联的条件不是一对一的关系是一对多或多对多的关系可以用exists和not exists  吗
会不会出现和表关联条件一样的笛卡尔积的情况 

create  table  test1 (id  number,name  varchar2(20));
create  table  test2  (id  number,name  varchar2(20));

insert into  test1  values(1,'河北');
insert into  test1  values(1,'河北');
insert into  test1  values(2,'河南');
insert into  test1  values(2,'河南');
insert into  test1  values(3,'河东');
insert into  test1  values(3,'河东');

insert into  test2  values(1,'河北');
insert into  test2  values(1,'河北');
insert into  test2  values(2,'河南');
insert into  test2  values(2,'河南');


select *  from  test1  a   where  not  exists (select  1 from test2 b  where a.id=b.id)
select *  from  test1  a   where    exists (select  1 from test2 b  where a.id=b.id)

not  exists 和exists我都测试了一下  没有出现笛卡尔积的情况  谁能解释下


------解决思路----------------------
引用:
select *  from  test1  a   where  not  exists (select  1 from test2 b  where a.id=b.id)


select a.* from test 1 a left join test2 b on a.id=b.id where b.id is null
引用:
select *  from  test1  a   where    exists (select  1 from test2 b  where a.id=b.id)

select a.* from test 1 a join test2 b on a.id=b.id 
  相关解决方案