我有以下表格:
特
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由一个子查询组成。我做了一个测试,在那里我创建了实际的表,我的查询就可以了,但如果我用子查询的结果替换表,它就不起作用了。那是为什么?
答案 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