MSSQL-将一个表中的数据与多个表中的数据进行比较
我需要做一个比较,从一个是CRM清单的表到另外4个是Web服务器清单的表。目前我使用的是以下查询,但我得到了重复和误报,这是因为它将第一个表与另一个表重新检查,每次只输出结果,然后将它们全部显示在一起:MSSQL-将一个表中的数据与多个表中的数据进行比较,sql,sql-server,Sql,Sql Server,我需要做一个比较,从一个是CRM清单的表到另外4个是Web服务器清单的表。目前我使用的是以下查询,但我得到了重复和误报,这是因为它将第一个表与另一个表重新检查,每次只输出结果,然后将它们全部显示在一起: SELECT sc.Client, ws.[Host Header], ws.[IP Address], ws.[Status] FROM sc FULL JOIN ws ON sc.Urls = ws.[H
SELECT sc.Client,
ws.[Host Header],
ws.[IP Address],
ws.[Status]
FROM sc
FULL JOIN ws
ON sc.Urls = ws.[Host Header]
WHERE sc.Client IS NULL
OR ws.[Host Header] IS NULL
OR sc.Urls <> ws.[Host Header]
UNION
SELECT sc.Client,
ws2.[Host Header],
ws2.[IP Address],
ws2.[Status]
FROM sc
FULL JOIN ws2
ON sc.Urls = ws2.[Host Header]
WHERE sc.Client IS NULL
OR ws2.[Host Header] IS NULL
OR sc.Urls <> ws2.[Host Header]
UNION
SELECT sc.Client,
ws3.[Host Header],
ws3.[IP Address],
ws3.[Status]
FROM sc
FULL JOIN ws3
ON sc.Urls = ws3.[Host Header]
WHERE sc.Client IS NULL
OR ws3.[Host Header] IS NULL
OR sc.Urls <> ws3.[Host Header]
UNION
SELECT sc.Client,
ws4.[Host Header],
ws4.[IP Address],
ws4.[Status]
FROM sc
FULL JOIN ws4
ON sc.Urls = ws4.[Host Header]
WHERE sc.Client IS NULL
OR ws4.[Host Header] IS NULL
OR sc.Urls <> ws4.[Host Header]
有人能给我指出正确的方向吗?我只想返回sc.Client和ws.[Host Header]字段中空的或不匹配的每个表的不同结果,并且在4个Web服务器表之间没有重复项
谢谢
为什么不先尝试在所有ws表之间执行并集,然后对并集操作产生的表表达式执行sc表的完全联接乔治·贝托斯 这是绝对正确的!我将我的查询调整为以下内容,一切都很好
SELECT sc.Client, ws.[Host Header], ws.[IP Address], ws.[Status]
FROM sc full outer join (select * from ws1 union all select * from ws2 union all select * from ws3 union all select * from ws4) as ws ON sc.Urls = ws.[Host Header]
谢谢 可能是因为查询完全相同,所以您得到的是重复的?对不起,当我清理可识别的表信息时,我删除了表名,并失去了Web服务器表之间的区别。我的错。你能试着让4个连接完全相同,只针对不同的表,都是完全外部的,然后做一个where吗?这不正是我在包含的代码中所做的吗?为什么不先尝试在所有ws表之间执行一个并集,然后针对并集操作产生的表表达式执行sc表的完全并集呢?