2016-07-12 40 views
0

是否有可能如果我想要做INNER JOIN只有當記錄存在第二張桌子上如果沒有,那麼不加入?如果記錄存在,加入表格

這是我的表

用戶

+--------+--------------+ 
| id |  name  | 
+--------+--------------+ 
| 1 | John   | 
+--------+--------------+ 
| 2 | Josh   | 
+--------+--------------+ 

+--------+-------------+--------------+ 
| id | owner_id | house_no | 
+--------+-------------+--------------+ 
| 1 |  1  |  991  | 
+--------+-------------+--------------+ 

,這是我的INNER JOIN查詢

SELECT h.owner_id, u.name, h.house_no FROM user u 
INNER JOIN house h on u.id = h.owner_id 
WHERE u.id = :id 

它將返回這個結果,如果id = 1

+--------+--------------+--------------+ 
| id |  name  | house_no | 
+--------+--------------+--------------+ 
| 1 | John   |  991  | 
+--------+--------------+--------------+ 

,但如果我用id = 2運行沒有結果返回。

我想現在要做的就是仍然返回結果,即使在表房子

+0

這究竟是如何'內join'作品。只匹配行。 –

+0

哦,我明白了。我不知道。謝謝 ! –

回答

1

使用左外爲id = 2不存在任何數據,而不是加盟。

SELECT u.id, u.name, h.house_no FROM user u 
LEFT OUTER JOIN house h on u.id = h.owner_id 
WHERE u.id = :id 

產生的記錄爲:

+--------+--------------+--------------+ 
| id |  name  | house_no | 
+--------+--------------+--------------+ 
| 2 |  Josh  |  null  | 
+--------+--------------+--------------+ 
+0

是的,這是有效的。我不知道INNER JOIN只返回匹配結果。 –

+1

@ j.Doe這裏是如何工作的好參考https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ –

+0

謝謝!我會讀它 –

相關問題