oracle中从一张表中减去与另一张表中相同的数据?

时间:2022-04-19 22:17:50
我想在oracle中操作是这样:
如果有两张表,第一张表的数据是全部的数据,第二张表的数据在第一张表中肯定有的。
结果是:从第一张表中筛选出除去第二张表中有的数据。
比如:
第一张表A
id  name   subject score
1   张三   语文     90
2   张三   数学     80
3   张三   英语     70
4   李四   语文     95
5   李四   数学     85
6   李四   英语     75
7   王五   语文     67
8   王五   英语     70

第二表B:
id  name   subject score
1   张三   语文     90
2   张三   数学     80
3   张三   英语     70
4   李四   英语     75

我通过SQL语句想得到的结果是:
id  name   subject score
1   李四   语文     95
2   李四   数学     85
3   王五   语文     67
4   王五   英语     70

这样的SQL语句该如何查询?

7 个解决方案

#1


select * 
from tbl_a left join tbl_b
on tbl_a.name=tbl_b.name
and tbl_a.subject=tbl_b.subject
and tbl_a.score=tbl_b.score
where tbl_b.name is null
and tbl_b.subject is null;

#2


select * from A
    minus
select * from B

#3


该回复于2011-10-20 13:59:53被版主删除

#4


select a.id,a.name,a.subject,a.score from A a
  where a.name||a.subject not in (select b.name||b.subject from B b) 

#5


楼上的方法 是查不出任何结果的

#6


我说的是2楼

#7


3楼 也不行

#1


select * 
from tbl_a left join tbl_b
on tbl_a.name=tbl_b.name
and tbl_a.subject=tbl_b.subject
and tbl_a.score=tbl_b.score
where tbl_b.name is null
and tbl_b.subject is null;

#2


select * from A
    minus
select * from B

#3


该回复于2011-10-20 13:59:53被版主删除

#4


select a.id,a.name,a.subject,a.score from A a
  where a.name||a.subject not in (select b.name||b.subject from B b) 

#5


楼上的方法 是查不出任何结果的

#6


我说的是2楼

#7


3楼 也不行