我正在尝试使用正确的排除连接创建视图:
然而,还有一个冒号,我也想做一个WHERE。在这种情况下:
WHERE table.colon != 'x';
因为这个原因我试过了:
WHERE A.key IS NULL AND table.colon != 'x';
但是当我运行它时,我运行它时没有显示任何数据。 任何人都可以帮我解决这个问题吗?
先谢谢。
更新,这是我想要运行的查询:
SELECT dbo.DimServere.Servernavn, dbo.DimServere.Serverstatus, dbo.IderaPatchAnalyzer.IP_Adresse, dbo.IderaPatchAnalyzer.Release_, dbo.IderaPatchAnalyzer.Level_,
dbo.IderaPatchAnalyzer.Edition_, dbo.IderaPatchAnalyzer.Build, dbo.IderaPatchAnalyzer.Updates_Available, dbo.IderaPatchAnalyzer.Supported_,
dbo.IderaPatchAnalyzer.Support_Status
FROM dbo.DimServere RIGHT OUTER JOIN
dbo.IderaPatchAnalyzer ON dbo.DimServere.TcpIpAddress = dbo.IderaPatchAnalyzer.IP_Adresse AND dbo.DimServere.Serverstatus <> 'Disposed/Retired'
WHERE (dbo.DimServere.TcpIpAddress IS NULL)
答案 0 :(得分:1)
将条件移动到JOIN子句中。
SELECT *
FROM
Table1
LEFT JOIN Table2
ON Table1.Field = Table2.Field AND
Table2.OtherField != 'x'
WHERE Table2.Field IS NULL
答案 1 :(得分:0)
这个想法是正确的。但是,我想null
列中有dbo.DimServere.Serverstatus
个值。因为您正在使用比较运算符,所以此条件总是失败(与null
的比较未知)并且join
条件不满足(因为您AND
使用其他条件)而且你没有得到任何结果。
要解决此问题,请在isnull(dbo.DimServere.Serverstatus, 'somevalue')
条件中使用join
。
SELECT dbo.DimServere.Servernavn, dbo.DimServere.Serverstatus,
dbo.IderaPatchAnalyzer.IP_Adresse, dbo.IderaPatchAnalyzer.Release_,
dbo.IderaPatchAnalyzer.Level_, dbo.IderaPatchAnalyzer.Edition_,
dbo.IderaPatchAnalyzer.Build, dbo.IderaPatchAnalyzer.Updates_Available,
dbo.IderaPatchAnalyzer.Supported_, dbo.IderaPatchAnalyzer.Support_Status
FROM dbo.DimServere RIGHT OUTER JOIN
dbo.IderaPatchAnalyzer ON dbo.DimServere.TcpIpAddress = dbo.IderaPatchAnalyzer.IP_Adresse
AND isnull(dbo.DimServere.Serverstatus, 'somevalue') <> 'Disposed/Retired'
WHERE dbo.DimServere.TcpIpAddress IS NULL