IN NOT IN EXISTS NOT EXISTS 的问题

usernamezero 2009-03-11 11:06:08
我有两个表做比较A,B A表数据量小,B表数据量大,这种情况一用EXISTS或是NOT EXISTS我知道.如:
SELECT NAME,SEX FROM B
WHERE NOT EXISTS(SELECT NAME,SEX FROM A WHERE A.ID=B.ID AND A.SEX=B.SEX AND A.NAME=B.NAME) 这样能把B表中的唯一记录检索出来,如果现在要另一种需求.
A表的数据量小,B表的数据量大,我要检索出A表中与B表中编号不同,姓名不同,性别不同的记录来.用IN,NOT IN也好像不太合适
 SELECT * FROM A A1,B B1
WHERE A1.ID<>B1.ID AND A1.NAME<>B1.NAME .....
如果你是这种方法的话不用告诉我了.
select * from a a1 left job b b1 on 这种方法你是得不到a1里边不同的数据的因为他是一个合集,这种方法的话你也不用告诉我了
...全文
178 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
c8234933 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hdhai9451 的回复:]
应该这样:
select id,name,sex from b
minus select id,name,sex from a
[/Quote]
不错 学到了~~~
wonder888888 2009-03-16
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1112884

答案在里面
yangquan8018 2009-03-12
  • 打赏
  • 举报
回复


select a.*
from a, b
where a.id = b.id(+)
and a.name = b.name(+)
and a.sex = b.sex(+)
and b.id is null
yf520gn 2009-03-11
  • 打赏
  • 举报
回复
粘贴你的句子,发现少了个JOIN~自己加上就好~·
yf520gn 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 usernamezero 的帖子:]
select * from a a1 left job b b1 on 这种方法你是得不到a1里边不同的数据的因为他是一个合集,这种方法的话你也不用告诉我了
[/Quote]
这种方法是可以的,一般情况下效率也是最高的

--TRY IT
select A.* from a left job b on
A.ID=B.ID AND A.SEX=B.SEX AND A.NAME=B.NAME
WHERE B.ID IS NULL
Andy__Huang 2009-03-11
  • 打赏
  • 举报
回复
应该这样:
select id,name,sex from b
minus select id,name,sex from a
Andy__Huang 2009-03-11
  • 打赏
  • 举报
回复
我要检索出A表中与B表中编号不同,姓名不同,性别不同的记录来
=======================
只要其中一个条件不同就选出来?是吗?

SELECT NAME,SEX
FROM B
WHERE NOT EXISTS(SELECT 1 FROM A WHERE A.ID=B.ID or A.SEX=B.SEX or A.NAME=B.NAME)
randy_ideal 2009-03-11
  • 打赏
  • 举报
回复
检索出A表中与B表中编号不同或姓名不同或性别不同的记录:
select id,name,sex from a
minus select id,name,sex from b
jdsnhan 2009-03-11
  • 打赏
  • 举报
回复
试试这样
select employeeno,empname,gender,birthday,idcard_no from fc_psn f,testmdm m
where f.employeeno =m.fc_psn_id(+)
and f.empname =m.name_ch (+)
and f.gender =decode(m.sex,'男','1','女','2')(+)
and f.birthday =m.birthdate(+)
and f.idcard_no =m.idcard (+)
and m.fc_psn_id is null
yf520gn 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 usernamezero 的回复:]
select employeeno,empname,gender,birthday,idcard_no from fc_psn f,testmdm m
where f.employeeno <>m.fc_psn_id
and f.empname <>m.name_ch
and f.gender <>decode(m.sex,'男','1','女','2')
and f.birthday <>m.birthdate
and f.idcard_no <>m.idcard
就是这个查找出FC_PSN上的与TESTMDM中编号不同,姓名不同,性别不同,出生日期不同,身份证号不同的记录,有什么更好的方法
这样查找的速度太慢
[/Quote]
顶4楼!
usernamezero 2009-03-11
  • 打赏
  • 举报
回复
select employeeno,empname,gender,birthday,idcard_no from fc_psn f,testmdm m
where f.employeeno<>m.fc_psn_id
and f.empname<>m.name_ch
and f.gender<>decode(m.sex,'男','1','女','2')
and f.birthday<>m.birthdate
and f.idcard_no<>m.idcard
就是这个查找出FC_PSN上的与TESTMDM中编号不同,姓名不同,性别不同,出生日期不同,身份证号不同的记录,有什么更好的方法
这样查找的速度太慢
usernamezero 2009-03-11
  • 打赏
  • 举报
回复
检索出A表中与B表中编号不同或姓名不同或性别不同的记录:
select id,name,sex from a
minus select id,name,sex from b
不要'或' 要and 怎么改正一下啊
Raul_Gonzalez 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 randy_ideal 的回复:]
检索出A表中与B表中编号不同或姓名不同或性别不同的记录:
select id,name,sex from a
minus select id,name,sex from b
[/Quote]

正解!~

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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