现有两个表A,B,结构如下
A recordID 记录编号,memberID 会员卡号,approveCode 交易授权号 ,org 起始地,dest 目的地,redeemType 奖励类型
B recordID 记录编号, memberID 会员卡号,approveCode 交易授权号,applier 申请人,auditi 审核人现在两个表中的memberID 和 approveCode 是相等的也就是说a.memberID =b.memberID ,a.approveCode =b.approveCode 我的sql是这样的:select a.memberID ,a.approveCode ,a.org,a.dest,a.redeemType ,b.applier ,b.auditi from a,b
where a.memberID=b.memberID
and a.approveCode=b.approveCode现在两表各有两条记录,两条记录对应的memberID 和 approveCode 是相等的, 我应该是查出两条记录才对,我查出的是四条记录,其中有两条都是完全相同的。
我怎样得到我想要的字段而避免重复?
A recordID 记录编号,memberID 会员卡号,approveCode 交易授权号 ,org 起始地,dest 目的地,redeemType 奖励类型
B recordID 记录编号, memberID 会员卡号,approveCode 交易授权号,applier 申请人,auditi 审核人现在两个表中的memberID 和 approveCode 是相等的也就是说a.memberID =b.memberID ,a.approveCode =b.approveCode 我的sql是这样的:select a.memberID ,a.approveCode ,a.org,a.dest,a.redeemType ,b.applier ,b.auditi from a,b
where a.memberID=b.memberID
and a.approveCode=b.approveCode现在两表各有两条记录,两条记录对应的memberID 和 approveCode 是相等的, 我应该是查出两条记录才对,我查出的是四条记录,其中有两条都是完全相同的。
我怎样得到我想要的字段而避免重复?
where a.memberID=b.memberID
and a.approveCode=b.approveCode;
where a.memberID=b.memberID
and a.approveCode=b.approveCode;
看来你的a表的两条记录memberID approveCode 也是相等的,b表应该也一样select * from
(select a1.*,row_number() over (aprtition by a1.memberID,a1.approveCode order by a1.memberID,a1.approveCode from a a1) r ) a,
(select b1.*,row_number() over (aprtition by b1.memberID,b1.approveCode order by b1.memberID,b1.approveCode from b b1) r ) b
where a.memberID=b.memberID
and a.approveCode=b.approveCode
and a.r = b.r
只有这样了,虽然不是很可靠
问题是,两表各有2条记录的memberid和approvecode重复,那你如何确认两表之间的连接关系
from a
inner join b
on a.memberID = b.memberID
and a.approveCode =b.approveCode
eg.create table test_a(id_1 number(2),id_2 number(2),username varchar(10));create table test_b(id_1 number(2),id_2 number(2),username varchar(10));insert into test_a
select 1,1,'aaa' from dual
union all
select 2,2,'bbb' from dual
union all
select 3,3,'ccc' from dual;insert into test_b
select 1,1,'aaa' from dual
union all
select 2,2,'bbb' from dual
union all
select 3,3,'ccc' from dual;select*from test_a inner join test_b on test_a.id_1=test_b.id_1 and test_a.id_2=test_b.id_2;
应该还有条件做限制才行。
能否给出你的测试数据和你想要的结果呢?btw:如果你查出的4条记录是两两重复的,那么a表或b表的两条记录可能本身就是重复的。