代码之家  ›  专栏  ›  技术社区  ›  supertiki

Oracle SQL—在第三个表中查找独立表中两个唯一列的连接位置

  •  0
  • supertiki  · 技术社区  · 3 年前

    我有两张表:t1和b列,t2和c列

    第三个表是t3,它有两列b和c,这两列的类型与t1和t2相似。一些数据在t1、t2和t3之间匹配,但不是全部。

    在Oracle SQL中,在t1中查找数据的最佳方法是什么。b与t2相关。c使用t3。b和t3。c、 这样一来,t1。b=t3。b和t2。c=t3。c、 创建一对:(t1.b,t2.c)?

    我对stackoverflow和SQL都是新手,如果这个问题措辞不当,我深表歉意!提前谢谢。

    1 回复  |  直到 3 年前
        1
  •  0
  •   mathguy    3 年前
    select t1.b, t2.c
    from   t1 cross join t2
    where  (t1.b, t2.c) in (select b, c from t3)
    ;
    

    “交叉连接”是笛卡尔积——所有可能的交叉连接对 t1.b t2.c .除此之外,这个问题应该是不言自明的。

    剩下唯一有趣的问题是如何处理NULL。我可以。b是否为空(例如)?如果是这样,你会考虑t1对吗。b为NULL和t2。c as 103是否与表t3中的配对(空,103)相同?SQL的标准答案是,它们不应该被认为是平等的;空永远不等于其他任何东西,甚至不等于(另一个)空。我的答案正是如此——它符合这个标准。但正确的处理取决于你的业务问题。