1,如何得到两个表中不相同的记录
A表字段 id,major B表字段id,major
方法一:select id,major
from source
where id not in(select id from target)
union
select id,major
from target
where id not in(select id from source);
方法二:select id,major from
(select id,major from source
union
select id,major from target)
group by id,major
having (count(*)=1);
本例中查看两条记录是否相同,以id是否相同为标准
2,如何找出A表比B表多出的记录
方法一:使用集合运算MINUS
select id,major from A
minus
select id,major from B;
方法二:使用not exists
select id,major
from A
where not exists (select id from B where B.id =A.id);
方法三:使用not in
select id,major
from A
where id not in(select id from B);
3,如何找出两个表中相同的记录
方法一:使用集合运算INTERSECT
select id,major from A
intersect
select id,major faom B;
方法二:使用in
select id,major from A
where id in(select id form B);
方法三:使用exists
select id,major from A
where exists(select id from B where A.id =B.id);
这里判断两条记录是否相同主要看id是否相同
4,ORA-00937:not a single-group group function
解决方法:在group by后加上所有非聚合函数的字段名