数据库

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

2020-05-08  本文已影响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)

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

上一篇下一篇

猜你喜欢

热点阅读