SQL> SELECT * FROM B;T1 T2 ---------- ---------- A B B A C D D C F E M N已选择6行。SQL> SELECT T1,T2 FROM (SELECT B.T1 T1,B.T2 T2,B1.T1 T3 FROM B,B B1 WHERE B.T1 = B1.T2(+)) C 2 WHERE C.T1>C.T2 OR C.T3 IS NULL;T1 T2 ---------- ---------- B A D C F E M N
没写错,这里的关系是 A B纪录和B A在实际中是相同纪录,所以要去掉一条 C D, D C 同理 像E F这样的纪录就不用管他,仍旧保留。
那就这样 select distinct t1,t2 from table where t1>t2; 或 select distinct t1,t2 from table where t1<t2;
不过:
或者
B A
D C
E F
中的“E F”有点另类?
T1 T2
A B
B A
C D
D C
E F
H G
N M
怎么办?
估计应该是:返回 或者
A B B A
C D D C
E F F E
---------- ----------
A B
B A
C D
D C
F E
M N已选择6行。SQL> SELECT T1,T2 FROM (SELECT B.T1 T1,B.T2 T2,B1.T1 T3 FROM B,B B1 WHERE B.T1 = B1.T2(+)) C
2 WHERE C.T1>C.T2 OR C.T3 IS NULL;T1 T2
---------- ----------
B A
D C
F E
M N
A B纪录和B A在实际中是相同纪录,所以要去掉一条
C D, D C 同理
像E F这样的纪录就不用管他,仍旧保留。
select distinct t1,t2 from table where t1>t2;
或
select distinct t1,t2 from table where t1<t2;