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

时间:2012-10-19 07:05:20

标签: sql sql-server-2005 join

我有两个表被选中加入,

表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

如何修改连接查询

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

谢谢Karl

3 个答案:

答案 0 :(得分:11)

使用LEFT JOIN代替INNER JOIN

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

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

btw,LEFT OUTER JOINLEFT JOIN

相同

SQLFiddle Demo

答案 1 :(得分:2)

使用左外连接

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

答案 2 :(得分:-1)

SELECT ... FROM Table1 CROSS JOIN Table2