如何快速从两个表中查询出各自互不相同的记录?详细描述见内容。

flashstar 2006-06-05 01:40:38
有两个表A,B,字段、数据分别如下:
A
a b c d e
1 20060605 001 100 abc
2 20060605 002 100 aasdf
3 20060605 003 200 asf
.....


B
f b c d g
1 20060605 002 100 adfaf
2 20060605 004 500 adf
.....

我想达到这样一个目的,从A、B表中找出字段b、c、d的内容互不相同的记录(查询列表只需这三个字段即可)。如
A表中的第一、三条记录,和B表中的第二条记录。
当然这两个表的数据都相当多,各有将10万条的数据。请问有什么方法可以快速地找到上述记录?解决问题即结贴,分不够再加!!
...全文
186 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashstar 2006-06-05
  • 打赏
  • 举报
回复
谢谢楼上各位,结贴!
flashstar 2006-06-05
  • 打赏
  • 举报
回复
两个10万条记录的表关联在一起是很慢的啊
flashstar 2006-06-05
  • 打赏
  • 举报
回复
我用的也是 coolingpipe(冷箫轻笛) 的方法,有点慢。
itblog 2006-06-05
  • 打赏
  • 举报
回复
对啊,用or就可以了~

select * from a where exists(select 1 from b where b<>a.b or c<>a.c or d<>a.d )
冷箫轻笛 2006-06-05
  • 打赏
  • 举报
回复
select * from a where
b+c+d not in
(select a.b+a.c+a.d
from a,b
where a.b = b.b and a.c = b.c and a.d = b.d
)
union all
select * from b where
b+c+d not in
(select a.b+a.c+a.d
from a,b
where a.b = b.b and a.c = b.c and a.d = b.d
)
flashstar 2006-06-05
  • 打赏
  • 举报
回复
谢谢楼上的。
我试下先~
昵称被占用了 2006-06-05
  • 打赏
  • 举报
回复
select a.b,a.c,a.d,
b.b,b.c,b.d
from a,b
where a.b<>b.b
or a.c<>b.c
or a.d<>b.d
itblog 2006-06-05
  • 打赏
  • 举报
回复
select * from a where exists(select 1 from b where b<>a.b and c<>a.c and d<>a.d )
itblog 2006-06-05
  • 打赏
  • 举报
回复
select * from a where exists(select 1 from b where b<>a.b and c<>a.c and d<>a.d and e<>a.e)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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