我真的不确定如何说出这个问题 - 继续说明情况以及我要做的事情。我有一张这样的桌子:
ProductName Version
Excel 1.0.1
Word 1.0.2
Adobe 2.0.4
此表的目的只是向我展示相关产品的最新版本。我想要做的是搜索另一个我有结构的表:
Hostname ProductName ProductVersion .... Many other columns
Sample1 Excel 1.0.0
Sample2 Excel 1.0.1
Sample2 Adobe 2.0.4
etc...
我想从第一个表中获取产品名称/版本,并查看第二个表,查看除了最新版本软件之外的任何主机。产品名称在两个表之间略有不同,但ProductName类似于'%excel%'应该工作得很好。
我真的不知道从哪里开始 - 任何帮助都会受到赞赏!
答案 0 :(得分:1)
select table2.*
from table2
, table1
where charindex(table1.ProductName, table2.ProductName) > 0
and table2.version != table1.version
版本字符串的charindex匹配是一个可能无效的hack。它取决于Table2中的ProductName是Table1中值的子字符串。 YMMV。
随着你的牌桌越来越大,这将会大幅放缓。
答案 1 :(得分:0)
反过来做。 对于第二个表中的每一行,检查第一个表中是否存在相同的产品和版本。
SELECT *
FROM table2
WHERE NOT EXISTS (SELECT 1
FROM table1
WHERE table1.ProductName LIKE '%' + table2.ProductName + '%'
AND table1.version <> table2.ProductVersion)