关于两个表数据进行对比(急)

qq_20048163 2016-08-30 02:51:03
各位大神 我碰到一个工作中问题 业务要求如下:
有俩张表 其中的字段有一些是完全对应的
现在要求 在这些同样字段中 把字段内容进行对比
如有不同 则查出来 类似如下情况:
一表:
aid bid name year
1 1 sam 10

二表:
bid name year
1 sam 5


查出:
year
5
...全文
687 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_20048163 2016-08-31
  • 打赏
  • 举报
回复
本贴结贴了 方法就是那位大神说的 nullif语句
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
引用 22 楼 js14982 的回复:
[quote=引用 17 楼 qq_20048163 的回复:] [quote=引用 2 楼 js14982 的回复:] 可以研究下这个函数 NULLIF select nullif(b.bid,a.bid),nullif(b.name,a.name),nullif(b.year,a.year) from t1,t2 where t1.bid=t2.bid(+) ;
这个测试出来无内容 不太懂什么意思[/quote] nullif(b.bid,a.bid),比较2个参数,当2个参数一样时,返回null值,不一样时,返回第一个参数值。[/quote] 这个方法很不错 我还在测试中
ghx287524027 2016-08-30
  • 打赏
  • 举报
回复
你应该说明一下,什么样的数据之间才会进行对比……
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
引用 22 楼 js14982 的回复:
[quote=引用 17 楼 qq_20048163 的回复:] [quote=引用 2 楼 js14982 的回复:] 可以研究下这个函数 NULLIF select nullif(b.bid,a.bid),nullif(b.name,a.name),nullif(b.year,a.year) from t1,t2 where t1.bid=t2.bid(+) ;
这个测试出来无内容 不太懂什么意思[/quote] nullif(b.bid,a.bid),比较2个参数,当2个参数一样时,返回null值,不一样时,返回第一个参数值。[/quote] 我这里测试都是空的...有数据
js14982 2016-08-30
  • 打赏
  • 举报
回复
引用 17 楼 qq_20048163 的回复:
[quote=引用 2 楼 js14982 的回复:] 可以研究下这个函数 NULLIF select nullif(b.bid,a.bid),nullif(b.name,a.name),nullif(b.year,a.year) from t1,t2 where t1.bid=t2.bid(+) ;
这个测试出来无内容 不太懂什么意思[/quote] nullif(b.bid,a.bid),比较2个参数,当2个参数一样时,返回null值,不一样时,返回第一个参数值。
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
表一 aid bid name age 001 100 sam 16 表二 bid aid name age 100 001 sam 20 200 001 alan 16 类似于这样的数据 然后 表二的第二条数据表一的第一条 进行对比(name和age) 显示出来: age 16
sxq129601 2016-08-30
  • 打赏
  • 举报
回复
select * from a, b where a.id = b.id and (a.col1 <> b.col1) or (a.col2 <> b.col2) 。。。
卖水果的net 2016-08-30
  • 打赏
  • 举报
回复
你多给出一些测试数据,还有你的预期结果;
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
把需要对比的列全写上,不需要对比的,就不用写了。[/quote] 这个出来的数据是一串...然而我只需要那个不一样内容的字段..
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
引用 2 楼 js14982 的回复:
可以研究下这个函数 NULLIF select nullif(b.bid,a.bid),nullif(b.name,a.name),nullif(b.year,a.year) from t1,t2 where t1.bid=t2.bid(+) ;
这个测试出来无内容 不太懂什么意思
卖水果的net 2016-08-30
  • 打赏
  • 举报
回复
引用 14 楼 qq_20048163 的回复:
换了 但是这个函数好像只能是一一对应的列 这个我这里并不是一一对应的...
把需要对比的列全写上,不需要对比的,就不用写了。
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
引用 13 楼 sxq129601 的回复:
declare begin for i in (select owner,table_name,column_name from all_tables where ..)loop ... end loop; end;
这位大神是写了个过程 去遍历?
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
引用 12 楼 wmxcn2000 的回复:
[quote=引用 11 楼 qq_20048163 的回复:] [quote=引用 10 楼 wmxcn2000 的回复:] [quote=引用 9 楼 qq_20048163 的回复:] 对了 有点坑到大神们了 准确的说是一表的某一条数据 和另外一表的某一条进行对比 字段相同的进行内容对比 然后取出这个字段名或者 字段名和内容都行
看 8 #,就是解决你这个问题的;[/quote] 版主 我测试了一下你发的这些 ...不行...[/quote] 肯定是不行,你要换成你自己表名和列名,并且 列的个数要一样多;[/quote] 换了 但是这个函数好像只能是一一对应的列 这个我这里并不是一一对应的...
sxq129601 2016-08-30
  • 打赏
  • 举报
回复
declare begin for i in (select owner,table_name,column_name from all_tables where ..)loop ... end loop; end;
卖水果的net 2016-08-30
  • 打赏
  • 举报
回复
引用 11 楼 qq_20048163 的回复:
[quote=引用 10 楼 wmxcn2000 的回复:] [quote=引用 9 楼 qq_20048163 的回复:] 对了 有点坑到大神们了 准确的说是一表的某一条数据 和另外一表的某一条进行对比 字段相同的进行内容对比 然后取出这个字段名或者 字段名和内容都行
看 8 #,就是解决你这个问题的;[/quote] 版主 我测试了一下你发的这些 ...不行...[/quote] 肯定是不行,你要换成你自己表名和列名,并且 列的个数要一样多;
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
引用 10 楼 wmxcn2000 的回复:
[quote=引用 9 楼 qq_20048163 的回复:] 对了 有点坑到大神们了 准确的说是一表的某一条数据 和另外一表的某一条进行对比 字段相同的进行内容对比 然后取出这个字段名或者 字段名和内容都行
看 8 #,就是解决你这个问题的;[/quote] 版主 我测试了一下你发的这些 ...不行...
卖水果的net 2016-08-30
  • 打赏
  • 举报
回复
引用 9 楼 qq_20048163 的回复:
对了 有点坑到大神们了 准确的说是一表的某一条数据 和另外一表的某一条进行对比 字段相同的进行内容对比 然后取出这个字段名或者 字段名和内容都行
看 8 #,就是解决你这个问题的;
qq_20048163 2016-08-30
  • 打赏
  • 举报
回复
对了 有点坑到大神们了 准确的说是一表的某一条数据 和另外一表的某一条进行对比 字段相同的进行内容对比 然后取出这个字段名或者 字段名和内容都行
卖水果的net 2016-08-30
  • 打赏
  • 举报
回复
引用 3 楼 qq_20048163 的回复:
多谢版主如此快速回答 我这边不只一个字段进行对比 起码有二三十个字段 有没有 更好的办法呢?
你看看能不能使用 minus这个语法(except 是 sqlserve 的语法)
-- 大概这个样子
select * from sys.tables 
minus
select * from sys.tables 
卖水果的net 2016-08-30
  • 打赏
  • 举报
回复
引用 3 楼 qq_20048163 的回复:
多谢版主如此快速回答 我这边不只一个字段进行对比 起码有二三十个字段 有没有 更好的办法呢?
你看看能不能使用 except 这个语法
-- 大概这个样子
select * from sys.tables 
except
select * from sys.tables 
加载更多回复(6)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧