首页 新闻 会员 周边 捐助

oracle 求助求助

0
悬赏园豆:200 [已解决问题] 解决于 2015-11-30 14:57

表1有表2没有的数据,表2有表1没有的数据,表1和表2有共同的数据

表1和表2有一个字段是不同的

问题补充:

问题就是最后的查询可以显示出表1表2的全部数据,但是没有重复

例子:table1   字段A,B,C,D,E

   table2   字段A,B,C,D,F

table1.A,table1.B,table1.C,table1.D和table2.A,table2.B,table2.C,table2.D中有相同的数据也有不同的数据   table1.E和table1.F数据不同

需要的结果是select  table1.A,  table1.B , table1.C , table1.D,  table1.E , table2.F from *****

table1和2 的ABCD都要查出来,不能重复,E和F在对应上

D字段可以当成ID但是,table1和2中D字段的条数不一样, 

 

 

要求写出来,本人菜鸟,真是不会

YongX的主页 YongX | 初学一级 | 园豆:22
提问于:2015-11-30 11:44
< >
分享
最佳答案
0

需要 union  先吧相同的列 给合并出来然后 在连接原来的2个表   大概语句是这样的  语法上可能有问题 你调试下看下 

select A,B,C,D ,table1.E,table2.F from (

select table1.A,table1.B,table1.c,table1.D from table1

union

select table2.A,table12.B,table2.c,table2.D from table2

)  tb  left join  table1 on  table1.A =tb.A

left join table2 on table2.A =tb.A

收获园豆:130
傲雪江南 | 初学一级 |园豆:174 | 2015-11-30 12:15

自己加条件过滤重复的

傲雪江南 | 园豆:174 (初学一级) | 2015-11-30 12:19

@傲雪江南: 恩恩,我试试

YongX | 园豆:22 (初学一级) | 2015-11-30 13:03

@YongX: 哈哈 出来了,可是这豆子怎么给你

YongX | 园豆:22 (初学一级) | 2015-11-30 14:53

@YongX: 给了你130个豆子,因为也不全是根据你的思路的,所以我分给了别人点

YongX | 园豆:22 (初学一级) | 2015-11-30 14:58
其他回答(7)
0

然后呢?问题呢???

顾晓北 | 园豆:10898 (专家六级) | 2015-11-30 11:48

抱歉,问题补全了,再看一次

支持(0) 反对(0) YongX | 园豆:22 (初学一级) | 2015-11-30 11:58
0

差集  交集  并集

王六六666 | 园豆:213 (菜鸟二级) | 2015-11-30 11:49

抱歉,问题补全了,再看一次

支持(0) 反对(0) YongX | 园豆:22 (初学一级) | 2015-11-30 11:58
0

用sqlserver可以直接用select into xxx where xxx来解决 搜一下Oracle又没有相同的解决方案

nil | 园豆:886 (小虾三级) | 2015-11-30 11:55

抱歉,问题补全了,再看一次

支持(0) 反对(0) YongX | 园豆:22 (初学一级) | 2015-11-30 11:58

@YongX: E和F不同 算是同一条数据么 

在sqlserver中可以先查询出相同的数据,然后再通过条件筛选出不同的数据,大概能得到三张表再使用Union All来解决,

貌似 Union可以自动去除重复?这个关键字不是很了解,然后你在找下Oracle中又没有相同的方案。

支持(0) 反对(0) nil | 园豆:886 (小虾三级) | 2015-11-30 12:03
0
✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2015-11-30 11:56
0

一、确定需求,你的不重复是指某些字段不重复就可以达到目的还是针对整条数据

二、确定了哪些不重复,使用 distinct类似的函数或者使用 select  into where XX 去重复

收获园豆:20
风醉 | 园豆:1197 (小虾三级) | 2015-11-30 12:01
0

嗯,还是高分题回答的人多

之奇一昂 | 园豆:1421 (小虾三级) | 2015-11-30 12:34
0

select table1.A,table1.B,table.c,table.D,table1E,table2F  from table1,table2

where  table1.D =tabke2.D

 

我也不会,哈哈,厄 木有考虑效率或优化,不知道有重复数据不。

 

求差值的话,用right join 或者left join

收获园豆:50
小刺猬001 | 园豆:660 (小虾三级) | 2015-11-30 13:21

distinct 是去掉重复数据的。

 

一般查询并删除完全重复的数据。

例如查询卡号相同的数据。

select keyno from table1 

group by keyno 

having count(keyno) >1;

支持(0) 反对(0) 小刺猬001 | 园豆:660 (小虾三级) | 2015-11-30 13:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册