29 回答
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
试试
TA贡献1842条经验 获得超21个赞
@过于执著: 真的正如你前面所说,越是说得多越看得出水平啊。
读取次数都显示出来了,你说磁盘读取时,我擦。
好了,大牛哥,你给我的课外阅读我拜读了。
你回复我我会弹出邮件的,所以我每次都会看到。如果后续还有什么疑问可以多交流哈,大牛哥。
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
TA贡献1891条经验 获得超3个赞
@gw2010: 为了表示我的认真,上面其实有一些地方不一样。我的出了6列,有null的,而且在full join条件上没有做好处理,我相信实际数据应该比这个要好一些。但是我上传一个结果完全一样的可以看下。
TA贡献1780条经验 获得超5个赞
(select id, str = id+cid+did from A) as A1
将b也这样处理,然后用left join 和 right join来匹配。
TA贡献1784条经验 获得超2个赞
@gw2010: 你不会 (select * from a except select * from b) union all (select * from b except select * from a) 吗?
- 29 回答
- 0 关注
- 3834 浏览
添加回答
举报