添加特定列的缺失数据

时间:2018-02-21 18:56:11

标签: sql sql-server

我有以下表格:

SpecialtyId Name IsEnabled

SpecialtyReport

UserId SpecialtyName ReportsRead

我试图弄清楚如何从SpecialtyReport表中选择特定用户的所有记录,然后忽略名称缺失,从专业表填充它,所有其他值可以为空。

我试过的是:

SELECT s.Name, t.UserId, t.ReportsRead
FROM Specialty s
LEFT OUTER JOIN SpecialtyReport t ON s.Name = t.SpecialtyName
WHERE t.UserId = 1

然而,我得到的结果与我做内连接一样。专业表有大约10行,并且都具有唯一的名称,其中SpeialtyReport表有3行具有该用户ID。

我无法弄清楚为什么左外连接不会填充缺少的名字。我从上面的查询得到的最终结果只有3行。

编辑:

SpecialtyReport Table由一个子查询组成。我做了一个测试,在那里我创建了实际的表,我的查询就可以了,但如果我用子查询的结果替换表,它就不起作用了。那是为什么?

1 个答案:

答案 0 :(得分:1)

您应该在连接部分

编写UserId谓词
SELECT s.Name, t.UserId, t.ReportsRead
FROM Specialty s
LEFT OUTER JOIN SpecialtyReport t ON s.Name = t.SpecialtyName
      and  t.UserId = 1