免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2777 | 回复: 4
打印 上一主题 下一主题

相反数据的抽出问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-09 21:54 |只看该作者 |倒序浏览
字段1,字段2,字段3,字段4,字段5,字段6,字段7,字段8
A,01,02,11,12,34,56,46,68
B,02,01,12,11,56,34,68,46
A和B分别是同一个表的一对数据,字段1和字段2是反过来的,其他字段也是,问怎么实现表里多对数据的抽出
只要是同一对反数据,只抽出其中的一条就行,如A,B是一对,C,D是一对
A,B,C,D的主KEY都 不一样, 要抽出A,C或B,D都行,怎么实现呢
求大大解答
不胜感激

论坛徽章:
0
2 [报告]
发表于 2010-07-10 20:54 |只看该作者
可以通过对ROWID 的比较来实行,oracle 数据库每一条记录都有一个ROWID
其他数据库我没用过不知道,可以自己建一个自动序列号自动来模拟ROWID
假设表明为test
A    B    C    D
01 02   ?     ?
02 01   ?     ?
11 12   ?     ?
12 11   ?     ?
34 56   ?     ?
56 34   ?     ?
46 68   ?     ?
68 46   ?     ?
测试表只有8条数据
用以下PLSQL 语句:
select t.a,t.b
from test t
where t.a||t.b not in
( select v.b||v.a
from test v
where t.rowid < v.rowid )

返回的结果只有4条数据
A   B
2   1
12 11
56 34
68 46
如果判断 t.rowid > v.rowid
则返回如下四条数据
A   B
1  2
11 12
34 56
46 68

不知道这个是不是符合你的要求

论坛徽章:
0
3 [报告]
发表于 2010-07-10 20:56 |只看该作者
|| 是字符串连接运算符

论坛徽章:
0
4 [报告]
发表于 2010-07-11 18:01 |只看该作者
就是我想要的,谢谢
你太聪明了{:6_689:}

论坛徽章:
0
5 [报告]
发表于 2010-07-12 08:53 |只看该作者
只有符号不同的两个数,我们就说其中一个是另一个的相反数,但0的相反数是0。一般地,任意的一个有理数a,它的相反数是-a。a本身既可以是正数,也可以是负数,还可以是零。(具体取法:正数的相反数是数前加负号,负数的相反数是将原数的负号去掉,0的相反数是0)互为相反数的两个数在数轴上表示出来后,表示这两个数的点,分别在原点的两旁,与原点的距离相等,并且互为相反数的两个数
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP