2012-10-19 35 views
5

我有選擇的加入兩個表存在,加入,如果當我做這個選定條目不會在第二個表

表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 

兩個表都有一個內部連接和所有的纈氨酸列我得到這個結果:

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 

謝謝你,卡爾

回答

10

使用LEFT JOIN代替INNER JOIN

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

基本上,INNER JOIN retu rns記錄在另一張桌子上至少有一個匹配的地方。雖然LEFT JOIN返回所有記錄在桌子上左側規定是否具有匹配或無。

順便說一句,LEFT OUTER JOIN是相同的LEFT JOIN

SQLFiddle Demo

+0

作品太好了,謝謝你 – Karl

+0

歡迎@Karl! –

2

使用左外連接

SELECT ... FROM Table1 LEFT OUTER JOIN Table2 On Table1.FK = Table2.PK 
-1
SELECT ... FROM Table1 CROSS JOIN Table2 
+0

爲什麼'CROSS JOIN'? – SkyDrive

相關問題