如何查询PayPal交易表中的循环关联数据并实现去重?
解决PayPal关联交易查询的重复行问题
我完全懂你处理PayPal货币转换记录时的烦恼——每完成一次转换就会生成两条互相引用的交易记录,查询时总会跑出重复的行(比如既有A-B又有B-A),而且没有"主ID"来定义顺序,确实头疼!
问题根源
你的paypal_transaction表中,关联的交易是双向绑定的:A关联B,B也关联A。当你直接做关联查询时,数据库会把这两种组合都返回,自然就出现了重复结果。
完美解决方案
正如你提到的,用transaction_id < transaction_id_2这个过滤条件就能彻底解决问题。它会强制只保留ID对中前者字典序小于后者的那一行,自动剔除反向的重复记录。
具体SQL实现
你可以执行以下查询来得到期望的结果:
SELECT t1.transaction_id, t1.transaction_id_2, t1.value AS value_tid1, t2.value AS value_tid2 FROM paypal_transaction t1 INNER JOIN paypal_transaction t2 ON t1.transaction_id = t2.transaction_id_2 AND t1.transaction_id_2 = t2.transaction_id WHERE t1.transaction_id < t1.transaction_id_2;
执行后就能得到你想要的去重后的结果:
| transaction_id | transaction_id_2 | value_tid1 | value_tid2 |
|---|---|---|---|
| A | B | 10 | 20 |
| C | D | 30 | 40 |
这样每一对关联交易就只会显示一行,完全符合你的需求!
内容的提问来源于stack exchange,提问作者jaktrip
相关产品推荐
相关产品推荐

