如果第二个表中不存在条目,则加入

Kar*_*arl 6 sql join sql-server-2005

我有两个表被选中加入,

表格1

PK    Val1    Val2     FK
1     a       b        10
2     c       d        11
3     e       f
4     g       h        12
Run Code Online (Sandbox Code Playgroud)

表2

PK    Val3
10     X
11     Y
12     Z
Run Code Online (Sandbox Code Playgroud)

当我在这两个表上选择内连接和所有Val-Columns时,我得到这个结果:

Result
PK    Val1    Val2     Val3
1     a       b        X
2     c       d        Y
4     g       h        Z
Run Code Online (Sandbox Code Playgroud)

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

Result
PK    Val1    Val2     Val3
1     a       b        X
2     c       d        Y
3     e       f
4     g       h        Z
Run Code Online (Sandbox Code Playgroud)

我如何修改joinquery

SELECT ... FROM Table1 INNER JOIN Table2 On Table1.FK = Table2.PK
Run Code Online (Sandbox Code Playgroud)

谢谢你,卡尔

Joh*_*Woo 12

LEFT JOIN而不是INNER JOIN

SELECT ... FROM Table1 LEFT JOIN Table2 On Table1.FK = Table2.PK
Run Code Online (Sandbox Code Playgroud)

基本上,INNER JOIN返回记录在另一个表上至少有匹配的地方.while LEFT JOIN返回左侧指定的表上的所有记录,无论是匹配还是无匹配.

顺便说一句,LEFT OUTER JOIN是完全相同的LEFT JOIN

SQLFiddle演示