【问题标题】:join if entry doesn't exists in second table如果第二个表中不存在条目,则加入
【发布时间】:2012-10-09 18:16:44
【问题描述】:

我有两个被选中的表,

表1

PK    Val1    Val2     FK
1     a       b        10
2     c       d        11
3     e       f
4     g       h        12

表2

PK    Val3
10     X
11     Y
12     Z

当我对这两个带有内部连接的表和所有 Val-Columns 进行选择时,我得到了这个结果:

Result
PK    Val1    Val2     Val3
1     a       b        X
2     c       d        Y
4     g       h        Z

如您所见,缺少第三个条目。 我想要的是这样的:

Result
PK    Val1    Val2     Val3
1     a       b        X
2     c       d        Y
3     e       f
4     g       h        Z

如何修改joinquery

SELECT ... FROM Table1 INNER JOIN Table2 On Table1.FK = Table2.PK

谢谢你,卡尔

【问题讨论】:

    标签: sql sql-server-2005 join


    【解决方案1】:

    使用LEFT JOIN 而不是INNER JOIN

    SELECT ... FROM Table1 LEFT JOIN Table2 On Table1.FK = Table2.PK
    

    基本上,INNER JOIN 返回另一个表上至少匹配的记录。而LEFT JOIN 则返回左侧指定的表上的所有记录,无论它是否匹配。

    顺便说一句,LEFT OUTER JOINLEFT JOIN 相同

    SQLFiddle Demo

    【讨论】:

      【解决方案2】:

      使用左外连接

      SELECT ... FROM Table1 LEFT OUTER JOIN Table2 On Table1.FK = Table2.PK
      

      【讨论】:

        【解决方案3】:
        SELECT ... FROM Table1 CROSS JOIN Table2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-24
          • 1970-01-01
          • 2019-12-12
          • 2022-01-01
          • 1970-01-01
          • 2016-08-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多