大佬们,求问一道简单sql
1397
2023.01.07
发布于 未知归属地
  • 现在有一个订单表叫a,字段有order_id(主键,订单id) ,money_count(实际总和收款)。
  • 还有个子订单表叫b,字段有sub_order_id(主键,子订单id), order_id(订单id),money_type(有X和Y两种,'X'表示得到的钱款,'Y'表示退还的钱款),money_count(根据money_type,表示收款或者退款的绝对值)。
  • 每一个a表下的一行订单可能会在b表根据相同order_id对应多行子订单记录,理论上a.money_count应该是能对应的上b.money_count的加减总和。
  • 现在的需求是,查出来a表里有多少条记录是在b表里加减总和对不上的

比如a表:

字段
order_id1
money_count100

b表:

字段
sub_order_id1
order_id1
money_count120
money_typeX
字段
sub_order_id2
order_id1
money_count20
money_typeY

就是对应的上的

我想了个代码是

select a.* 
 from a,b
 where  a.money_count != (select sum(if(b.money_type='X',b.money_count,-b.money_count))
                                                             from b
                                                             where a.order_id=b.order_id
                                                            group by b.order_id )

但查出来结果不太对,出来几千条。。。刚进公司sql还不太熟练呜呜。。。求大佬解答哪里有问题,或者有其他好的写法思路吗,感觉写的好捞

评论 (7)