SQL Query从同一个表中获取不同列的数据

时间:2016-10-18 17:37:16

标签: sql oracle

有没有办法通过检查两个不同的列来从Same表中获取数据?这是一个样本,其中我有一个表A,其中有如下所示的记录

Col.a Col.b Col.c
-----------------
X     Y      Z
Y     X      Z

col.a,col.b和col.c共有3列,其中一些有如下所示的记录,其中一行的Col.a =另一行的col.b,反之亦然,两者中唯一的共同点行是col.c ...

我想得到所有表现出这种行为的不同col.c id的列表..我尝试了内部联接但没有帮助

请建议

2 个答案:

答案 0 :(得分:0)

为什么内部联盟没有帮助?

create table t_col (a varchar2(1),b varchar2(1),c varchar2(1)); 

insert into t_col (a,b,c) values('x','y','z'); 
insert into t_col (a,b,c) values('y','x','z'); 

select distinct col.c 
from t_col col 
join t_col col2 on Col.a = Col2.b and Col.b = col2.a and Col.c = Col2.c; 

select distinct col.c 
from t_col col 
where exists (select null 
                from t_col col2 
               where Col.a = Col2.b 
                 and Col.b = col2.a 
                 and Col.c = Col2.c); 

或者我们想检查空值

select distinct col.c 
from t_col col 
where exists (select null 
                from t_col col2 
               where decode(Col.a,Col2.b,1,0) = 1
                 and decode(Col.b,col2.a,1,0) = 1
                 and decode(Col.c,Col2.c,1,0) = 1); 

答案 1 :(得分:0)

我认为这就是你要找的东西:

SELECT DISTINCT c
    FROM A
    WHERE a IN (
            SELECT b
            FROM A
            )