sql-server - T-SQL:获取全部,但在 'not null' 上加入

标签 sql-server t-sql inner-join

因此,我尝试从表中获取所有项目,然后如果有联接成员,则添加一些数据,否则将数据保留为空 (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 值。

如果有用的话,请进一步阅读;

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

关于sql-server - T-SQL:获取全部,但在 'not null' 上加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076490/

相关文章:

orm - 带有聚合的 Sequelize 选择包含坏属性 => 错误

sql - 如何为SQL Server中的列添加标识?

sql - 如何摆脱最后的记录空值

json - 在 Azure Synapse 中读取 JSON

sql - 将记录从一个表复制到另一个表时更改值

sql - 为什么这个查询不起作用?

mysql - 同表带条件内连接

mysql - 同一字段上的 SQL 多个内部联接

SQL View如何分组和求和

javascript - 在 ngOption <select> 中使用 unicode 符号