Главная » Microsoft SQL Server, Базы данных » Разность множеств

0

Рис. 9.12. Запрос на разность множеств, использующий подзапрос, оптимизируется практически в тот же план выполнения, что и решение, использующее левое внешнее объединение

Я часто использую модифицированную версию этой методики для удаления некорректных данных, появившихся в ходе преобразований. С логической точки зрения запрос на разность полных множеств является прямой противоположностью внутреннему объединению. Он находит все строки вне пересечения в любом из наборов данных, комбинируя полное внешнее объединение с ограничением WHERE, отсеивающем только пустые значения в любом из первичных ключей:

SELECT Thingl, Thing2 FROM One

FULL OUTER JOIN Two

ON One.OnePK = Two.OnePK WHERE Two.TwoPK IS NULL OR One.OnePK IS NULL

Результатом станут все строки, не имеющие соответствия в таблице на другом конце объединения:

Thingl

Thing2

NULL         Plane

NULL         Cycle

Blue Thing NULL

Old Thing   NULL

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии