中易网

SQL 两个相同结构表对比内容,并显示差异。

答案:3  悬赏:0  
解决时间 2021-02-20 11:36
两表名称为A和B,内容为下图:

需对比的列为:inv_no,wstation_no,st_no,mat_no,p_unit,p_quan,p_weight,avg_cost,p_avg_cost,virt_if,em_if
(其实就是VER_NO,LINE_NO,LINE_ID这三列可以忽略)

条件:
1、mat_no这个列,A表中存在,B表不存在(B表存在而A表不存在)。
可以用两个临时表对比,并且一起显示,如下图。(A表存在,而B表不存在)

2、如A和B表都同时存在相同的MAT_NO,请列出该相同MAT_NO行其他不同的地方,并显示。

注释:
其实就是一个产品的BOM(物料清单),inv_no字段为成品,mat_no字段是材料名称。
问题症结在于,材料可能会随机变动,变动在SQL表里体现的方式是新增或者删除。现在需要将变动前和变动后的数据进行对比,显示出变动的是什么地方。
1、是新增材料还是减少材料,如果是新增的话,是新增了什么东西。(减少亦同)
2、是否修改,修改了哪个字段

恳请各位前辈帮忙,跪谢。








最佳答案
大概能明白的你的意思,你需要一个可以记录商品参数变更的历史轨迹.
这个很简单,在调整的时候,插入调整的数据进去就好了.正就加加 负就减
你每次查询的时候分类做group by 就好了.
我之前做的保险公司的保单续期缴费 大概就是这样的.
全部回答
第一个比较简单,有个语句结构块可以解决;或者用 Exists加关联也行; 第二个看起来应该是要建立在一个历史数据比对上的,你说的这两个表一个是实时的,一个是历史的?如果是,那第二个的第1个问题直接比对就可以了,这个也好解决~ 重点想要关注学习下第2个,这个以前我也遇到过这样的困扰,当时字段太多有好几百个,后来协商重点记录了十多个字段,是在Trigger里完成的。也是相当于没有找到终极方案~
select * from a where id not in( select a.id from a,b where a.列1=b.列1 and a.列2=b.列2,a.列3=b.列3)--这个是查出第一个表里单独存在的数据.也就是第二个表里不存在的数据 select * from b where id not in( select b.id from a,b where a.列1=b.列1 and a.列2=b.列2,a.列3=b.列3)--这个是查出第二个表里单独存在的数据.也就是第二个表里不存在的数据 注意:上面的三列只是简单的列出来而已..如果你有多列.就全部写出来.. 比如有五列..就一直到列五.. 执行两条语句.就可以看出a 表里b表没有数据,b表里a表没有的数据 -------------------------------------------------------------- 晕死.麻烦老大你下次一次说清楚.......郁闷..写了一大堆..全没用了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
二级建造师,是全国通用的呢?还是省的?我考
我有一个很好的女性朋友,在国外上高中,有一
《白杨》和《草原》两课在写法上有个共的特点
什么神仙身边总跟着一只顶丹鹤
影驰gtx750ti1g显卡是什么型号
贵字的形近字是什么
请看我的回复
求问气垫鞋漏气了怎么办
保定市莎蔓丽莎美容会所,恒祥北大街店,前台
金成花园东门这个地址在什么地方,我要处理点
业报与因果
在网上买火车票能同时买不同城市的票吗
吉乐文化艺术培训学校这个地址在什么地方,我
税前工资13000,除去五险税后是多少?
为什么说麦迪的天赋比科比高
推荐资讯
求类似于重生的传奇幸福生活,射门吧少年,公
床前明月光,疑是地上霜,举头望明月,低头思
清香珍饭店我想知道这个在什么地方
上诉期过了对判决不服怎么办
日本的GIGA女战士开场就被虐,什么嘞脖子啊,
交通银行苏州郭巷支行在哪里啊,我有事要去这
2012新款 md103 可以自己增添内存吗?
苏州什么医院做过敏原检测比较好
大学里英语专业的学生,大二时英语应该到什么
朱记黄焖鸡米饭这个地址在什么地方,我要处理
幼儿园家园共育的原则十六字方针是?
发电机'W'接线柱..
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?