MSSQL-将一个表中的数据与多个表中的数据进行比较

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

我需要做一个比较,从一个是CRM清单的表到另外4个是Web服务器清单的表。目前我使用的是以下查询,但我得到了重复和误报,这是因为它将第一个表与另一个表重新检查,每次只输出结果,然后将它们全部显示在一起:

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表的完全并集呢?