所以我试图从表中获取所有项目,如果有加入的成员则添加一些数据,否则保持数据为空(null
)
我拥有的是:
null
表格如下:
片剂:
SELECT
t.id AS _id,
m.name AS name
FROM
tableT AS t
INNER JOIN
tableM AS m ON t.m_id = m.id
tableM :
id m.id
----------------
1 NULL
2 1
3 NULL
期望的结果应该是:
id name
----------------
1 'Bob'
我怎样才能实现这一点,据我所知, id name
------------------
1 NULL
2 'Bob'
3 NULL
不会加入inner join
值,因为它们无法匹配
答案 0 :(得分:3)
您正在寻找LEFT JOIN
SELECT
t.id AS _id,
m.name AS name
FROM tableT AS t
LEFT JOIN
tableM AS m
ON t.m_id = m.id
INNER JOIN
的定义只返回两个表中匹配的数据,如果一个表缺少数据,则不返回该行。
LEFT JOIN
将获取第一个表中的所有数据,并且仅匹配第二个表中的记录,从而允许NULL
值。
如果它有用,可以进一步阅读;
答案 1 :(得分:2)
使用LEFT JOIN
:
SELECT
t.id AS _id,
m.name AS name
FROM tableT AS t
LEFT OUTER JOIN
tableM AS m
ON t.m_id = m.id
答案 2 :(得分:0)
您的要求是左加入:
SELECT
t.id AS _id,
m.name AS name
FROM tableT AS t
LEFT OUTER JOIN
tableM AS m
ON t.m_id = m.id
请查看以下链接,了解有关不同类型连接的更多信息。 https://msdn.microsoft.com/en-us/library/zt8wzxy4.aspx