Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为特定列添加缺少的数据_Sql_Sql Server - Fatal编程技术网

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“”)