【问题标题】:Trying to do an inner join with a column and some of the values in that column anything尝试对列和该列中的某些值进行内部连接
【发布时间】:2020-07-29 18:51:35
【问题描述】:

正如标题所述,我正在尝试对两个表进行内部连接。对于其中一个表,您有一列填充了正常值。但是,对于另一个表,填充的值通常是正常的,但有时它会填充“-”,这意味着一切。

所以我想做一个内部连接,如果有一个“-”,它将与另一个表中的所有内容连接。这是我可以用 SQL 做的事情吗(我正在使用 Oracle btw),但如果它是一个正常的非“-”值,则执行正常的内部连接操作。

t1:
A | B
1 | 2
- | 4
3 | 5



t2:
A | C
1 | 4
6 | 6


t3: result of inner join
A | B | C
1 | 2 | 4
1 | 4 | 4
6 | 4 | 6

有什么建议吗?任何和所有的帮助表示赞赏!

【问题讨论】:

    标签: sql join oracle11g


    【解决方案1】:

    我认为这是:

    select t2.a, t1.b, t2.c
    from t1 join
         t2
         on t1.a = t2.a or t1.a = '-';
    

    请注意,or 有时很难针对性能进行优化。因此,您可能会发现使用union all 会更快:

    select t2.a, t1.b, t2.c
    from t1 join
         t2
         on t1.a = t2.a
    union all
    select t2.a, t1.b, t2.c
    from t1 join
         t2
         on t1.a = '-';
    

    Here 是一个 dbfiddle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      相关资源
      最近更新 更多