【问题标题】:Join two table show all record on left table if right table exists, use right table加入两个表,如果右表存在,则显示左表上的所有记录,使用右表
【发布时间】:2013-09-03 04:29:54
【问题描述】:

我有桌子 A:

ColA |  ColB          
  A  |   0    
  B  |   0      
  C  |   0      

和表 B:

ColA |  ColB          
  A  |   10    
  D  |   50      

我想使用 LEFT OUTER JOIN,如果右表的行存在,那么它将使用右表,否则使用左表。我想要的结果是:

ColA |  ColB          
  A  |   10    
  B  |   0      
  C  |   0  

【问题讨论】:

  • 您在尝试中遇到了什么问题?
  • 我正在使用一份报告来计算“本周”的总数。首先,我将获取当前星期的当前日期,然后获取所有日期的所有记录。之后,我将加入当前星期日期到所有日期以获得当前星期的总数。

标签: sql sql-server join outer-join


【解决方案1】:
SELECT  
    a.ColA,
    ISNULL(b.ColB, 0) AS B_ColB
FROM    dbo.TableA a
LEFT JOIN dbo.TableB b ON a.ColA = b.ColA

【讨论】:

    【解决方案2】:
    SELECT  
        a.ColA,
        ISNULL(b.ColB, a.ColB) AS B_ColB
    FROM    dbo.TableA a
    LEFT JOIN dbo.TableB b ON a.ColA = b.ColA
    

    FIDDLE

    【讨论】:

      【解决方案3】:

      你可以在这里使用完全外连接...

      这是一个例子

      SELECT Customers.CustomerName, Orders.OrderID
      FROM Customers
      FULL OUTER JOIN Orders
      ON Customers.CustomerID=Orders.CustomerID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-06
        相关资源
        最近更新 更多