美文网首页数据库
如何找到两个数据库表的差异?

如何找到两个数据库表的差异?

作者: 爱学习的代代 | 来源:发表于2020-05-08 09:13 被阅读0次

    项目背景:近来测试的一个项目,需求大致是这样的:一个渠道的结算系统有两种结算方式(平价和阶梯价),分别放在A表和B表,不过A、B表中均有一个相同的字段(渠道ID)可以去查询到对应的结算方式的ID。然后根据结算方式的ID去获取结算方式的细节(C表),提供给外部系统使用。

    经过分析需求得知:同一个时间段仅有一个结算方式生效。且提供给外部的接口需要传入渠道号,及时间戳。

    一个渠道的结算方式可能的情况:

    • 仅有平价结算方式
    • 仅有阶梯价结算方式
    • 既有平价结算方式,又有阶梯价结算方式(生效的时间段不同,当前时间段仅有一个结算方式生效)

    针对前两种情况,一般我们的测试思路是从表中找数据,然后进行验证。可是又需要保证仅有的一种结算方式的情况。

    此时也就转化成了求两个表差异的问题。

    解决方案:

    1、sql实现(关联字段用x代替)

    -- 找出A中有 B没有的数据
    
    select * from A where (select count(*) from B where A.x = B.x ) = 0
    
    -- 找出A、B中共有的数据
    select * from A where (select count(*) from B  where A.x = B.x ) >  0
    
    

    2、代码实现(Python版本)

    
    if __name__ == '__main__':
        A = [1, 3, 4, 5, 7, 8]
        B = [2, 3, 5, 9, 0]
        # A与B的差异元素
        result = []
        for i in A:
            if i not in B:
                result.append(i)
        print("找出A中比B多的元素,并输出")
        print(result)
        result.clear()
        # 找出AB中相同的元素并输出
        for i in A:
            if i in B:
                result.append(i)
        print("A、B中相同的元素:")
        print(result)
    
    

    小结:一个挺简单的项目,只要我们能进行深入的思考,还是会有一些收获的。尽可能问问自己,我能从这个项目中学到什么,然后自己给自己提出问题,解决问题。

    相关文章

      网友评论

        本文标题:如何找到两个数据库表的差异?

        本文链接:https://www.haomeiwen.com/subject/mwdxnhtx.html