【发布时间】:2016-01-06 23:55:17
【问题描述】:
我正在尝试使用 WQL(本质上是 SQL)返回包含来自 SCCM 2012 的项目的行,当我修改它以使用内部联接从另一个表中提取信息时,我的结果中出现重复行(最初我做了不在乎有 SMS_ObjectContainerItem.ContainerNodeID 并简单地使用 where 子句)
代码如下:
SELECT DISTINCT table1.Name, table1.CollectionID, table2.ContainerNodeID
FROM table1
INNER JOIN table2 ON table1.CollectionID = table2.InstanceKey
WHERE table1.CollectionID IN
(
SELECT DISTINCT InstanceKey
FROM table2
WHERE ObjectType='5000' AND (ContainerNodeID=16777279 OR ContainerNodeID=16777220)
) AND CollectionType='2'
ORDER BY table1.Name
我要注意的一件事是,提供外部 WHERE 子句的内部查询返回 55 个结果,但是完整的查询返回 84 个结果,其中所有额外内容只是前面一些结果的重复。 Distinct 并没有解决这个问题,我感觉实际的修复将是对 Inner Join/where 子句的修改,但我的 SQL 技能还没有。任何帮助将不胜感激删除我得到的额外行。
谢谢。
更多信息,当我执行此操作时,查询不会返回重复项,这是我编写的原始查询,但现在我想保留该行来自哪个 ContainerNodeID,会显示额外的行。
SELECT DISTINCT table1.Name, table1.CollectionID
FROM table1
WHERE table1.CollectionID IN
(
SELECT DISTINCT InstanceKey
FROM table2
WHERE ObjectType='5000' AND (ContainerNodeID=16777279 OR ContainerNodeID=16777220)
) AND CollectionType='2'
ORDER BY table1.Name
EDITED:通用的表名以方便阅读。添加其他示例
【问题讨论】:
-
当你有重复的时候,你想要哪些?样本数据和期望的结果将有助于阐明您真正想要做什么。