MSSQL Select 行不符合条件
MSSQL Select rows not matching criteria
不太确定如何表达这个问题 - 这是情况和我正在尝试做的事情。我有一个 table 这样的:
ProductName Version
Excel 1.0.1
Word 1.0.2
Adobe 2.0.4
此table的目的只是为了向我展示相关产品的最新版本。我想做的是搜索另一个 table 我有这样的结构:
Hostname ProductName ProductVersion .... Many other columns
Sample1 Excel 1.0.0
Sample2 Excel 1.0.1
Sample2 Adobe 2.0.4
etc...
我想从第一个 table 中获取产品 names/versions,然后在第二个 table 中查找任何 运行 不是最新版本的主机的软件。两个 table 之间的产品名称会略有不同,但像“%excel%”这样的产品名称应该可以正常工作。
我真的不知道从哪里开始 - 任何帮助将不胜感激!
select table2.*
from table2
, table1
where charindex(table1.ProductName, table2.ProductName) > 0
and table2.version != table1.version
版本字符串的 charindex 匹配是一个 hack,可能行不通。这取决于 Table2 中的 ProductName 是 Table1 中值的子字符串。 YMMV.
随着您的表变大,速度会急剧下降。
反其道而行之。
对于第二个 table 中的每一行,检查第一个 table 中是否存在相同的产品和版本。
SELECT *
FROM table2
WHERE NOT EXISTS (SELECT 1
FROM table1
WHERE table1.ProductName LIKE '%' + table2.ProductName + '%'
AND table1.version <> table2.ProductVersion)
不太确定如何表达这个问题 - 这是情况和我正在尝试做的事情。我有一个 table 这样的:
ProductName Version
Excel 1.0.1
Word 1.0.2
Adobe 2.0.4
此table的目的只是为了向我展示相关产品的最新版本。我想做的是搜索另一个 table 我有这样的结构:
Hostname ProductName ProductVersion .... Many other columns
Sample1 Excel 1.0.0
Sample2 Excel 1.0.1
Sample2 Adobe 2.0.4
etc...
我想从第一个 table 中获取产品 names/versions,然后在第二个 table 中查找任何 运行 不是最新版本的主机的软件。两个 table 之间的产品名称会略有不同,但像“%excel%”这样的产品名称应该可以正常工作。
我真的不知道从哪里开始 - 任何帮助将不胜感激!
select table2.*
from table2
, table1
where charindex(table1.ProductName, table2.ProductName) > 0
and table2.version != table1.version
版本字符串的 charindex 匹配是一个 hack,可能行不通。这取决于 Table2 中的 ProductName 是 Table1 中值的子字符串。 YMMV.
随着您的表变大,速度会急剧下降。
反其道而行之。 对于第二个 table 中的每一行,检查第一个 table 中是否存在相同的产品和版本。
SELECT *
FROM table2
WHERE NOT EXISTS (SELECT 1
FROM table1
WHERE table1.ProductName LIKE '%' + table2.ProductName + '%'
AND table1.version <> table2.ProductVersion)