Я пытаюсь вернуть строки, содержащие элементы из SCCM 2012, используя WQL (который по существу является SQL), и я получаю повторяющиеся строки в своих результатах, когда я модифицировал его, чтобы получить информацию из другой таблицы, используя внутреннее соединение (Изначально я не хотел иметь SMS_ObjectContainerItem.ContainerNodeID и просто использовал статью, где)Дублирующие результаты SQL Inner Join (SCCM 2012 WQL)
Вот код:
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: Обобщенные имена таблиц для облегчения чтения. Добавлен другой пример
Когда у вас есть дубликаты, какие из них вам нужны? Примеры данных и желаемые результаты помогут прояснить, что вы действительно хотите сделать. –