我有两个带有以下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,而不是我正在寻找的。 p>
实际上,View 1返回:
abcxxxxxx
dokjfhxxx
cmodxxxxx
wuysxxxxx
aaallooxx
查看2返回:
xdsffsafa
xxxxhjsks
ajdhxxxxx
cmodxxxxx
xxxxxx12s
skskshdki
aaallooxx
从输出中我们看到有两个匹配。
的那个aaallooxx
cmodxxxxx
这是我正在寻找的输出。有什么建议吗?
答案 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)
您可以使用子串输出正常加入它们