T-SQL:全部获取,但加入'not null'

时间:2016-08-22 09:57:45

标签: sql-server tsql inner-join

所以我试图从表中获取所有项目,如果有加入的成员则添加一些数据,否则保持数据为空(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值,因为它们无法匹配

3 个答案:

答案 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值。

如果它有用,可以进一步阅读;

http://www.w3schools.com/sql/sql_join_left.asp

答案 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