Sql 为特定列添加缺少的数据
我有以下表格: 特产Sql 为特定列添加缺少的数据,sql,sql-server,Sql,Sql Server,我有以下表格: 特产 SpecialtyId Name IsEnabled 特殊报告 UserId SpecialtyName ReportsRead 我试图找出如何从SpecialtyReport表中选择特定用户的所有记录,然后从Speciality表中填充缺少的任何名称,所有其他值都可以为null 我尝试的是: SELECT s.Name, t.UserId, t.ReportsRead FROM Specialty s LEFT OUTER JOIN SpecialtyReport t
SpecialtyId Name IsEnabled
特殊报告
UserId SpecialtyName ReportsRead
我试图找出如何从SpecialtyReport表中选择特定用户的所有记录,然后从Speciality表中填充缺少的任何名称,所有其他值都可以为null
我尝试的是:
SELECT s.Name, t.UserId, t.ReportsRead
FROM Specialty s
LEFT OUTER JOIN SpecialtyReport t ON s.Name = t.SpecialtyName
WHERE t.UserId = 1
但是,我得到的结果与内部联接的结果相同。Speciality表大约有10行,所有行都具有唯一的名称,其中SpecialTyReport表有3行具有该用户Id
我不明白为什么外部左连接不能填充缺少的名称。我从上面的查询中得到的最终结果只有3行
编辑:
SpecialtyReport表由一个子查询组成。我做了一个测试,在那里我创建了一个实际的表,并且我的查询在它上面工作,但是如果我用子查询的结果替换表,它就不工作了。为什么会这样?您应该在连接部分编写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
您能给出示例数据和预期输出吗?这与我的查询有什么不同?很抱歉,我似乎看不出有什么不同。我删除了where部分,并移动UserId=1谓词来连接部分,并使用ISNULL(UserId,'noid')是的,这是可能的。您可以使用
ISNULL
或COALESCE
函数。例如ISNULL(t.UserId“”)