【问题标题】:Oracle SQL compare two tables dataOracle SQL比较两个表数据
【发布时间】:2018-10-20 01:40:39
【问题描述】:

我的 oracle 数据库中有两个表 A、B,我想根据唯一字段(用户 ID)比较两个表的数据,但 B 表包含用户 ID 作为 Puserid(所有 ID 都附加 P)

上述情况下如何使用where条件让两张表取回数据?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    从技术上讲,“P”是前置,而不是附加。

    你可以使用||:

    from a join
         b
         on b.userId = 'P' || a.userId
    

    这可能会对性能产生重大影响。如果可以,您应该在b 中定义一个新列(可能是一个虚拟列)。以上可以使用b(userid)上的索引。

    你也可以这样表述:

    from a join
         b
         on a.userId = substr(b.userId, 2)
    

    这可以利用a(userid)上的索引。

    【讨论】:

      【解决方案2】:

      您可以使用ltrim

      select a.*, b.*
        from tableA a join tableB b on ( a.userid = ltrim(b.userid,'P') );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-23
        • 1970-01-01
        • 1970-01-01
        • 2020-08-12
        • 2011-05-29
        • 1970-01-01
        • 2018-02-25
        • 1970-01-01
        相关资源
        最近更新 更多