如果存在记录,则加入表

时间:2016-07-12 19:55:07

标签: sql sql-server database inner-join

是否有可能只有当第二张表上的记录存在时才进行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运行,则不会返回任何结果。

我现在想做的是,即使表格中id = 2没有数据,它仍会返回结果

1 个答案:

答案 0 :(得分:1)

改为使用左外连接。

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     | 
+--------+--------------+--------------+