因此,我尝试从表中获取所有项目,然后如果有联接成员,则添加一些数据,否则将数据保留为空 (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
表格如下所示:
tableT:
id m.id
----------------
1 NULL
2 1
3 NULL
表M:
id name
----------------
1 'Bob'
期望的结果应该是这样的:
id name
------------------
1 NULL
2 'Bob'
3 NULL
我怎样才能实现这一点,据我所知内部联接
不会加入NULL
值,因为它们无法匹配
最佳答案
您正在寻找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
值。
如果有用的话,请进一步阅读;
关于sql-server - T-SQL:获取全部,但在 'not null' 上加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076490/