Sql server 如何比较Sql Server中具有公共字段的两个单独查询的结果?

Sql server 如何比较Sql Server中具有公共字段的两个单独查询的结果?,sql-server,Sql Server,也许是因为今天是星期五,但我似乎无法得到这个,感觉应该很容易 我有一个结果集(从多个表中提取数据),它提供了以下结果集: 房间类型|图像ID |日期 下一个查询(从以上不同的表中提取)结果为: 图像ID |日期|标记 我只是想比较一下结果,看看两个结果之间哪些imageid是共同的,哪些是分别归入每个列表的 我尝试将每个表的结果插入临时表,并对imageid进行联接,但sql server不喜欢这样。理想情况下,我希望有一个解决方案,允许我这样做而不创建临时表 我使用union进行了研究,但似乎

也许是因为今天是星期五,但我似乎无法得到这个,感觉应该很容易

我有一个结果集(从多个表中提取数据),它提供了以下结果集:

房间类型|图像ID |日期

下一个查询(从以上不同的表中提取)结果为:

图像ID |日期|标记

我只是想比较一下结果,看看两个结果之间哪些imageid是共同的,哪些是分别归入每个列表的

我尝试将每个表的结果插入临时表,并对imageid进行联接,但sql server不喜欢这样。理想情况下,我希望有一个解决方案,允许我这样做而不创建临时表

我使用union进行了研究,但似乎因为这两个结果没有相同的列,所以我避免了这种方法


谢谢

您可以通过多种不同的方式来实现这一点,例如,您可以使用内部联接或使用两个集合作为派生表进行相交

select ImageID from (your_first_query)
intersect
select ImageID from (your_second_query)


您没有解释为什么SQL Server不喜欢对ImageId执行联接。应该没问题。关于第一个问题,您需要将两个查询转换为子查询,并对它们执行完全输出联接:

Select * from
(Select Room Type, ImageID, Date ...) T1 Full Outer Join
(Select ImageID, Date, Tagged ...) T2 on T1.ImageId = T2.ImageId
对连接两侧的Null值的分析应该会给出您想要的结果

SELECT TableA.ImageID
FROM TableA
WHERE TableA.ImageID 
IN (SELECT TableB.ImageID FROM TableB)
SELECT TableA.ImageID
FROM TableA
WHERE TableA.ImageID 
IN (SELECT TableB.ImageID FROM TableB)
select q1.ImageID 
from  (your_first_query) q1
WHERE EXISTS (select 1
              from (your_second_query)
              WHERE ImageID = q1.ImageID)