匹配两个选择语句进行比较

时间:2017-04-07 08:06:18

标签: sql

我有两个带有以下select语句的sql视图:

1

 select SUBSTRING(UpdatedColumn,3, 9) as [PartialSearch] from [Database_Name].[dbo].[Table]

2

select SUBSTRING(OldColumn,3, 9) as [PartialSearchOnLiveTable] from [Same_Database_Name].[dbo].[DifferentTable]

这两个视图分别只返回1列。现在我想将第一个视图中的值与第二个视图中的值进行比较,并返回未找到匹配项的UpdatedColumn数据。

我考虑使用比较运算符,但似乎无法得到我想要的东西,因为根据我的逻辑,我将必须在where子句中指定对彼此的视图的条件检查,并且sql不允许。此外,UNION / UNION ALL将只给我所有记录的结果集。这是我不想要的东西。

最后,我看了Combine two select statements for date comparison,而不是我正在寻找的。

实际上,View 1返回:

abcxxxxxx
dokjfhxxx
cmodxxxxx
wuysxxxxx
aaallooxx

查看2返回:

xdsffsafa
xxxxhjsks
ajdhxxxxx
cmodxxxxx
xxxxxx12s
skskshdki
aaallooxx

从输出中我们看到有两个匹配。

的那个
aaallooxx
cmodxxxxx

这是我正在寻找的输出。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以使用intersect,在两个查询之间设置运算符。因此它只打印两个查询中存在的公共行。

select SUBSTRING(OldColumn,3, 9) as [PartialSearchOnLiveTable] from [Same_Database_Name].[dbo].[DifferentTable]
intersect --Set Operation between the two queries
select SUBSTRING(UpdatedColumn,3, 9) as [PartialSearch] from [Database_Name].[dbo].[Table]

答案 1 :(得分:0)

select SUBSTRING(UpdatedColumn,3, 9) as [PartialSearch] 
from [Database_Name].[dbo].[Table] a 
INNER JOIN [Database_Name].[dbo].[Diff_Table] b 
ON a.SUBSTRING(UpdatedColumn,3, 9) = b.SUBSTRING(OldColumn,3, 9)

您可以使用子串输出正常加入它们