A 表
cmo1 订单编号
cmo2 用户ID
cmo2 订单金额
B表
bom1 会员卡ID
bom2 用户ID
bom3 会员卡金额
select * from A as a inner join B as b on a.com2=b.bom2
现在问题是一个用户会有两张或者多张会员卡
所以关联查询的时候会发现出现两条重复的记录
怎么解决?
select * from A as a inner join B as b on a.com2=b.bom2 group by a.userid
两条重复的记录是指什么?
一个用户会有两张或者多张会员卡
两张或多张会员卡一样?
不知道你业务是咋样的 要是一份订单只能一个用户的某一张会员卡支付,那你A表加个会员卡ID字段关联会员卡信息表吧
表创建有问题,订单和会员卡ID关联起来,就不会有问题了。
如果已经没办法改变了就吧会员卡ID处理下,Case then ,下放到一列内。然后在查询数据也不会有问题。
select .*, SUM(A.cmo2) -SUM(B.cmo2) from A as a inner join B as b on a.com2=b.bom2 group by a.userid, 这样可以去重,但是不知道是不是你要的结果
那A表中的用户ID应该改为会员卡ID,原表设计本身有问题。不出现两条记录,又不动表,那就这样
select * from A as a inner join (select * from b b1 where not exists (select 1 from b where bom2=b1.bom2 and bom3<b1.bom3)
) as b on a.com2=b.bom2
distinct就可以去重了,,
select a.com1,a.com2,a.com3,b.bom1,b.bom2,distinct b.bom3 from A as a inner join B as b on a.com2=b.bom2