为了账号安全,请及时绑定邮箱和手机立即绑定

SQL比较两个表中相同字段的差异

SQL比较两个表中相同字段的差异

互换的青春 2018-12-07 03:29:53
如有 A,B 两个表  都有id , cId , did 三个字段, 两个表中这三个字段的值应该对应的  假如 A中, id =1,cId=2 ,did=3   B 中, id =1,cId=2 ,did=3 这样的是正确的 , 假如 两个表中这三个字段 至少一个没对应上 就是错误的,并列出来, 两个表中能对应上的不列出来   求高效的SQL 。。   备注: SQL SERVER
查看完整描述

29 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

@过于执著: 是的,我经常被鄙视,你同我一个级别不是也被鄙视啊。

查看完整回答
反对 回复 2019-01-07
?
函数式编程

TA贡献1807条经验 获得超9个赞

我用了笨办法 ,写程序一点点校验,光用sql脚本无法得到精准的结果,实在不敢用。 其中还有别的逻辑。

查看完整回答
反对 回复 2019-01-07
?
暮色呼如

TA贡献1853条经验 获得超9个赞

@gw2010: 亲,我错了,其次 ,真理越辩越明,不是口水战,那是为真理而辩

查看完整回答
反对 回复 2019-01-07
?
温温酱

TA贡献1752条经验 获得超4个赞

@后缀名: 不对可以指出来,你才逗。如果你正当的旨出来可能会少很多上面的口水战

查看完整回答
反对 回复 2019-01-07
?
撒科打诨

TA贡献1934条经验 获得超2个赞

貌似不对啊

查看完整回答
反对 回复 2019-01-07
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

select * from a full join b on a.id1=b.id1 and a.id2=b.id2 and a.id3=b.id3

where a.id1 is null or b.id1 is null

试试

查看完整回答
反对 回复 2019-01-07
?
临摹微笑

TA贡献1982条经验 获得超2个赞

@gw2010:   你们俩真逗。。这世界就怕认真二字。

查看完整回答
反对 回复 2019-01-07
?
茅侃侃

TA贡献1842条经验 获得超21个赞

@过于执著: 真的正如你前面所说,越是说得多越看得出水平啊。

读取次数都显示出来了,你说磁盘读取时,我擦。

好了,大牛哥,你给我的课外阅读我拜读了。

你回复我我会弹出邮件的,所以我每次都会看到。如果后续还有什么疑问可以多交流哈,大牛哥。

查看完整回答
反对 回复 2019-01-07
?
倚天杖

TA贡献1828条经验 获得超3个赞

@过于执著: 你知道 基数 这个参数吗? join 的基数是多少?

查看完整回答
反对 回复 2019-01-07
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

@gw2010: CPU执行时间长了, 磁盘读取时间短了, 你觉得哪个划得来?

估计你是没用过 交集并集差级吧, 我记得我的回复中有 C#实现交集差集的,

下面的供你课外阅读,

SELECT * FROM (
SELECT COUNT(DISTINCT ORDER_) OVER (PARTITION BY C1, C2, C3) ORDER_, C1, C2, C3 FROM (
SELECT 'A' ORDER_, C1, C2, C3 FROM A UNION ALL
SELECT 'B' ORDER_, C1, C2, C3 FROM B) ) WHERE ORDER_ = 1

查看完整回答
反对 回复 2019-01-07
?
万千封印

TA贡献1891条经验 获得超3个赞

@gw2010: 为了表示我的认真,上面其实有一些地方不一样。我的出了6列,有null的,而且在full join条件上没有做好处理,我相信实际数据应该比这个要好一些。但是我上传一个结果完全一样的可以看下。

查看完整回答
反对 回复 2019-01-07
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

@过于执著: 我还真执着,我还真无聊,我做了一组数据来测试,不能说明所有问题,可以说明一点点吧。至少也可以说明我不是太蠢。数据是一样一半。

查看完整回答
反对 回复 2019-01-07
?
三国纷争

TA贡献1804条经验 获得超7个赞

@过于执著: 看你回复的样子同我一个级别,不知道你是不是大牛,万一我看错了呢。

不过基本上不太会,如果你是大牛我就甘拜下风。哈哈。

查看完整回答
反对 回复 2019-01-07
?
森栏

TA贡献1810条经验 获得超5个赞

@gw2010: 我确实很少在问博回答问题,数据库还是csdn论坛好玩些。

查看完整回答
反对 回复 2019-01-07
?
翻阅古今

TA贡献1780条经验 获得超5个赞

(select id, str = id+cid+did from A) as A1

将b也这样处理,然后用left join 和 right join来匹配。

查看完整回答
反对 回复 2019-01-07
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

@gw2010: 以后不要回复了, 免得被鄙视,

查看完整回答
反对 回复 2019-01-07
?
湖上湖

TA贡献2003条经验 获得超2个赞

@过于执著: 你在叫我测的时候你自己有测过吗?

查看完整回答
反对 回复 2019-01-07
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

@过于执著: 晕,你上面是这样写的吗?回答问题有问题还事好来找。我不会吗?

我会啊,我下面已经写了,不过我不太会这么蠢的方式。

查看完整回答
反对 回复 2019-01-07
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

@gw2010: 你不会  (select * from a except select * from b) union all (select * from b except select * from a) 吗?

查看完整回答
反对 回复 2019-01-07
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

@过于执著: 

except也不地,这里是两个表没有的都要显示出来。

查看完整回答
反对 回复 2019-01-07
首页上一页12下一页尾页
  • 29 回答
  • 0 关注
  • 3834 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信