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

如有 A,B 两个表  都有id , cId , did 三个字段,

两个表中这三个字段的值应该对应的 

假如 A中, id =1,cId=2 ,did=3

  B 中, id =1,cId=2 ,did=3

这样的是正确的 ,

假如 两个表中这三个字段 至少一个没对应上 就是错误的,并列出来, 两个表中能对应上的不列出来

 

求高效的SQL 。。

 

备注: SQL SERVER

互换的青春
浏览 3835回答 29
29回答

翻阅古今

(select id, str = id+cid+did from A) as A1 将b也这样处理,然后用left join 和 right join来匹配。

慕森卡

A : id =1,cId=2 ,did=3  A : id =1,cId=2 ,did=4 B: id =1,cId=2 ,did=4B: id =1,cId=2 ,did=5   这是2条记录还是3条记录?

Cats萌萌

两条, 1和 4列出来

侃侃尔雅

@后缀名: 先查出合适的 然后not in 一下就好了

qq_笑_17

@小眼睛老鼠:      你用哪个字段not in ?    仔细想想, 这个not in 是不行的

慕神8447489

@小眼睛老鼠: 感谢你昨天回复, 这个问题是求差级, 直接使用 EXCEPT 就可以了. NOT IN 效率低 且 SQL SERVER 貌似不支持 多字段.

慕村9548890

select * from a intersect select * from b

富国沪深

错了 上面是交集, 差级关键字是 EXCEPT

猛跑小猪

@过于执著:  except也不地,这里是两个表没有的都要显示出来。

一只斗牛犬

@gw2010: 你不会  (select * from a except select * from b) union all (select * from b except select * from a) 吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server