【问题标题】:Efficient way to join two tables only for the records having values of a var from the third table仅针对具有来自第三个表的 var 值的记录连接两个表的有效方法
【发布时间】:2012-08-08 16:43:59
【问题描述】:

我有两张大桌子:

A: (ID1,VAR1);
B: (ID1,ID2,VAR2)

还有第三张桌子:

C: (ID2...)

我想合并 A 和 B 仅用于具有来自 C 的值的记录。

以下是我使用“IN”的想法。有没有更有效的方法来做到这一点?有时我发现“IN”不太好用。

非常感谢!

select  A.VAR1,B.VAR2
from A 
INNER JOIN 
(
  select ID1,VAR2
  from B
  where ID2 in
                (select distinct ID2
                 from C
                )
) D
on A.ID1=D.ID1

【问题讨论】:

    标签: sql sql-server sql-server-2008 plsql


    【解决方案1】:
    select A.VAR1, B.VAR2 
    from A 
    INNER JOIN B on A.ID1 = B.ID1 
    INNER JOIN C on B.ID2 = C.ID2
    

    【讨论】:

      【解决方案2】:

      无需使用子查询,您只需对所有表执行JOIN

      SELECT A.VAR1, B.VAR2
      FROM A 
      INNER JOIN B
          ON A.id1 = b.id1
      INNER join
      (
          SELECT DISTINCT id2
          FROM c
      ) c1
          ON b.id2 = c1.id2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 2021-08-11
        • 2016-01-15
        • 2013-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多