各个大神,项目期间遇到一个问题,需求如下
表中有两列,其中第一列的中数据在第二列存在,第二列的数据在第一列中存在,相互存在的需要合并成同一条记录,请教如何实现,
表数据如下
A B
1 2
2 1
1 3
3 4
4 3现在要查询出来的结果
A B
1 2
1 3
3 4
表中有两列,其中第一列的中数据在第二列存在,第二列的数据在第一列中存在,相互存在的需要合并成同一条记录,请教如何实现,
表数据如下
A B
1 2
2 1
1 3
3 4
4 3现在要查询出来的结果
A B
1 2
1 3
3 4
解决方案 »
- 空间发布专题: 拿什么拯救你, 执行计划
- 如果找出不同元组的个数?要求重复的元组只计数一次。
- 请问ORACLE里面有没有跟SQL 事件探查器 差不多的工具呢
- 哪里有Oracle的入门电子教程
- 怎么样导入导出表结构?
- 在oracle中创建java时报java已经被创建但是编译出错,大家来看看。再线等
- 这个SQL语句怎么写(关于树型查询)?
- powerdesigner创建的oracle数据库表为什么查询不了呢?
- help!!!数据从sqlserver转换到oracle以后。。。
- 一个关于oracle9i的简单问题,各位请进,来者给分
- ORACLE sql语句问题求大神帮忙
- oracle11g客户端的安装问题,来个大神帮帮忙。万分感谢
SQL>
SQL> create table test(a int, b int);
Table created
SQL> begin
2 insert into test values(1, 2);
3 insert into test values(2, 1);
4 insert into test values(1, 3);
5 insert into test values(3, 4);
6 insert into test values(4, 3);
7 end;
8 /
PL/SQL procedure successfully completed
SQL> select distinct least(a, b) a, greatest(a,b) b
2 from test;
A B
---------- ----------
1 2
1 3
3 4
SQL> drop table test purge;
Table droppedSQL>
假如加入
insert into test values(8, 6);
这条记录,是不是展示时有点问题
from test t1,test t2
where t1.a=t2.b and t1.b=t2.a and t1.a<t1.b
union
select * from test t where (t.a,t.b) not in
(select t1.*
from test t1,test t2
where t1.a=t2.b and t1.b=t2.a);
嗯,a,b 的显示前后顺序会变。 不知道会不会对楼主的实际需求有没有影响;
----------------------------------------------------------------------
确实会有这种情况,然后可能刚才没有描述清楚,A和B列都是些字符串。
假如加入
insert into test values(8, 6);
这条记录,是不是展示时有点问题delete from tt
where a in (
select t2.a
from tt t1,tt t2
where t1.a = t2.b and t2.a = t1.b and t2.a > t2.b
)
这样就没问题了
where a.列1=b.列2 and a.列2=b.列1
如果你要显示的是必须相同的话
union
select b,a from table
from test t1,test t2
where t1.a=t2.b and t1.b=t2.a and t1.a<t1.b
union
select * from test t where (t.a,t.b) not in
(select t1.*
from test t1,test t2
where t1.a=t2.b and t1.b=t2.a);